私は頭がおかしくなりました...1つのアセンブリでドメインを手動でロードおよびアンロードしようとしています:
var domainInfo = new AppDomainSetup
{
PrivateBinPath = baseDir
};
_hostedDomain = AppDomain.CreateDomain("Domain", null, domainInfo);
_hostedDomain.UnhandledException += HostedDomainUnhandledException;
_hostedDomain.DomainUnload += _hostedDomain_DomainUnload;
var bytes = File.ReadAllBytes("Facade.dll"); // Loads facade from hosts location.
_hostedDomain.Load(bytes);
string asmName = Path.Combine(baseDir, Properties.Settings.Default.AssemblyName);
bytes = File.ReadAllBytes(asmName);
var entryPoint = _hostedDomain.Load(bytes); // exception here!
そして、私が見たもの:アセンブリを読み込もうとすると、システムがCurrentDir/assemblyname.dllからそれを読み込んでいることがわかります(そして失敗します)。例外: System.IO.FileNotFoundException:
ファイルまたはアセンブリ Worker、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。
ログ: このバインドはデフォルトのロード コンテキストで開始されます。ログ: アプリケーション構成ファイルの使用: D:#Development!test\trunk\bin\Debug\Bootstrapper.vshost.exe.Config ログ: ホスト構成ファイルの使用: ログ: C:\Windows\Microsoft.NET\ のマシン構成ファイルの使用Framework64\v4.0.30319\config\machine.config. ログ: 現時点ではポリシーが参照に適用されていません (プライベート、カスタム、部分、または場所に基づくアセンブリ バインド)。ログ: 新しい URL ファイルのダウンロードを試みています:///D:/#Development/!test/trunk/bin/Debug/Worker.DLL。ログ: 新しい URL ファイルのダウンロードを試みています:///D:/#Development/!test/trunk/bin/Debug/Worker/Worker.DLL。ログ: 新しい URL ファイル:///D:/#Development/!test/trunk/bin/Debug/Worker.EXE のダウンロードを試みています。ログ: 新しい URL ファイルのダウンロードを試みています:///D:/#Development/!test/trunk/bin/Debug/Worker/Worker.EXE。
ところで。制限により LoadFrom を使用することはできません (XML シリアライゼーションに問題があります....)。このルーチンで .NET が何をしているのか? ドメインのロードとアンロードが難しいのはなぜですか? 助けてくれてありがとう!