我的场景是我有一个创建 AppDomains 的 .net 应用程序(比如说一个控制台应用程序)。然后,它需要在该 AppDomain 中的类型上创建实例并调用方法。每个 AppDomain 都有一个特定的目录,它的依赖项应该在哪里,它不在控制台应用程序目录下(甚至不靠近)。这是我的简单代码:
string baseDirectory = "c:\foo"; // <- where AppDomain's dependecies
// set up the app domain
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationName = DateTime.Now.ToString("hh:MM:ss:ffff");
setup.ApplicationBase = baseDirectory;
setup.PrivateBinPath = baseDirectory;
// create app domain
AppDomain domain = AppDomain.CreateDomain(
name,
AppDomain.CurrentDomain.Evidence,
setup );
// instantiate Type from an assembly in that AppDomain
ObjectHandle handle = domain.CreateInstanceFrom(
"SampleClassLibrary.dll", // <- exists in "c:\foo"
"SomeClassInTheDll" );
对 CreateInstanceFrom 的调用会导致 FileNotFoundExcepotion。FusionLog显示搜索到的目录是Console应用目录。它不包括从 AppDomain 设置的搜索文件夹 - 在“baseDirecory”变量中。
我究竟做错了什么?是否有另一种方法来执行位于另一个 AppDomain 中的代码?
谢谢...