简单的问题,也许你很容易回答。
我的应用程序的输出文件夹中有一个名为"MigrationSteps.dll“的dll。我想要做的是在一个新的AppDomain中加载这个程序集,并在这个DLL中的一个类的实例上执行一个方法。
这是我的密码
string migrationStepsDllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "MigrationSteps.dll");
AppDomainSetup appDomainSetup = new AppDomainSetup() { PrivateBinPath = AppDomain.CurrentDomain.BaseDirectory };
Evidence evidence = AppDomain.CurrentDomain.Evidence;
AppDomain appDomain = AppDomain.CreateDomain("MigrationAppDomain", evidence, appDomainSetup);
//NOT WORKING
Assembly assembly = appDomain.Load(@"C:\Output\Debug\OptimeToolbench\MigrationSteps.dll");
//WORKING
Assembly assembly = Assembly.LoadFrom(@"C:\Output\Debug\OptimeToolbench\MigrationSteps.dll"); ****works.
//This part works well
Type type = assembly.GetType("MigrationSteps.Foo");
object foo = Activator.CreateInstance(type);
MethodInfo methodInfo = type.GetMethod("HelloWorld");
methodInfo.Invoke(foo, null);
AppDomain.Unload(appDomain);每次显示为不工作的行抛出一个
FileNotFoundException
。
为什么这么说?
谢谢你抽出时间。
发布于 2010-06-29 00:44:51
将“C:\Output\Debug\OptimeToolbench”添加到PrivateBinPath的AppDomain中。也不要传递文件名,传递程序集名称--我假设这将是MigrationSteps。
发布于 2010-06-28 22:01:06
AppDomain.Load(字符串)接受程序集名称(强名称)-而不是文件在磁盘上的路径!
https://stackoverflow.com/questions/3136371
复制相似问题