0

我崩溃了……我试图用一个程序集手动加载和卸载域:

        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' 或其依赖项之一。该系统找不到指定的文件。

LOG:此绑定在默认加载上下文中开始。LOG:使用应用程序配置文件:D:#Development!test\trunk\bin\Debug\Bootstrapper.vshost.exe.Config LOG:使用主机配置文件:LOG:使用来自 C:\Windows\Microsoft.NET\ 的机器配置文件Framework64\v4.0.30319\config\machine.config。LOG:此时未将策略应用于引用(私有、自定义、部分或基于位置的程序集绑定)。日志:正在尝试下载新的 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