我正在尝试执行以下操作:
m_appDomain = AppDomain.CreateDomain("Plugin AppDomain", null, new AppDomainSetup {PrivateBinPath = PluginActivator.SandboxFolder, PrivateBinPathProbe = "x"});
PluginActivator activator = m_appDomain.CreateInstanceAndUnwrap(typeof(PluginActivator).Assembly.GetName().Name, typeof(PluginActivator).FullName) as PluginActivator;
但是,由于PrivateBinPathProbe
设置为true,因此第二行根本不会查看应用程序库,并立即崩溃(运行上述代码的可执行文件上的FileNotFoundException
)。
我尝试在第二行之前附加一个AssemblyResolve
处理程序:
m_appDomain.AssemblyResolve += OnAssemblyResolve;
目的是让AssemblyResolve
处理程序手动进入ApplicationBase
并加载所需的所有程序集。这导致应用程序崩溃并出现相同的错误。
我无法更改探测目录的顺序。我该如何解决这个问题?
修改
我知道这个问题不是很清楚,但我很难理解问题是什么,所以很难让人更清楚。首先,我不明白为什么我刚刚创建的新AppDomain甚至需要对应用程序可执行文件的引用。 如果您希望我澄清一切,请告诉我。