0

私は頭がおかしくなりました...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 が何をしているのか? ドメインのロードとアンロードが難しいのはなぜですか? 助けてくれてありがとう!

4

0 に答える 0