クラス「Place」と整数を返す関数「Where」で構成される.NETDLLがあるとします。dllをアプリケーションドメインにロードし、関数を実行して、アプリケーションドメインをアンロードする必要があります。
Dim domain As AppDomain = AppDomain.CreateDomain("Executor")
Dim buffer() As Byte = IO.File.ReadAllBytes("c:\path\Locator.dll")
Dim asy As Assembly = domain.Load(buffer)
Dim obj As [Object] = asy.CreateInstance("Locator.Place")
Dim method As MethodInfo = obj.GetType.GetMethod("Where")
Dim result as Integer = method.Invoke(obj, New [Object]() { 1 })
AppDomain.Unload(domain)
この行は失敗します:
Dim asy As Assembly = domain.Load(buffer)
このエラーメッセージの場合:
'Could not load file or assembly 'Place, Version=1.0.0.0, Culture=neutral, PublicKeyToken-null' or one of it's dependencies. The System Cannot find the specified file.'
ファイルはバッファにあるので、依存関係の.dllだと思います。ただし、ベースプログラムディレクトリでそれらを見つける必要があります。
エラーの原因について何か考えはありますか?
アセンブリをAppDomainにロードし、関数を実行してから、AppDomainをアンロードするためのテスト済みのサンプルコードをいただければ幸いです。
(ところで、私はグーグルで検索しましたが、有用なサンプルは見つかりませんでした。)