我只是想弄清楚 AppDomain 并将 DLL 从不同位置加载到新创建的 AppDomain 中,并且遇到了困难。我知道我将使用不同的方法,但我仍在试图弄清楚这一点。这是该示例的背景故事。
我在 c:\DLLTest 中有一个名为 MyReadableDLL.dll 的 dll。以下是内容:
namespace MyReadableDLL
{
public class ReadThis : System.MarshalByRefObject
{
public string RetString()
{
return "You read this from 'Read This!'";
}
}
}
我在一个单独的项目中创建了一个 DomainBuilder,内容如下:
class DomainBuilder
{
AppDomainSetup domaininfo = new AppDomainSetup();
AppDomain appDomain;
public DomainBuilder()
{
domaininfo.ApplicationBase = @"c:\DLLtest";
appDomain = AppDomain.CreateDomain("MyTestDomain", null, domaininfo);
var currentdomain = AppDomain.CurrentDomain.FriendlyName;
var temporarydomain = appDomain.FriendlyName;
var appbase = appDomain.SetupInformation.ApplicationBase;
Assembly assembly = appDomain.Load("MyReadableDLL");
}
}
我不明白为什么当我获得 appDomain.Load 行时它会失败。根据我对 AddDomainSetup 的了解,AppliationBase 设置了用于检查 EXE/DLL 文件的默认目录,并且该文件夹中只有 MyReadableDLL 文件。我已经看到了许多使用 CreateInstanceFromandUnwrap 的解决方案,我确信我会朝那个方向发展。与此同时,我正在尝试找到一个工作示例 1) AddDomain 创建然后 2) AppDomain.Load 到新创建的域中。而已。我错过了什么?