作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
简单的问题,您可能很容易回答。
我的应用程序的同一输出文件夹中有一个名为“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
.
这是为什么?
谢谢你的时间。
最佳答案
将“C:\Output\Debug\OptimeToolbench\”添加到 AppDomain 的 PrivateBinPath。也不要传递文件名,传递程序集名称——我假设那是 MigrationSteps。
关于c# - 在另一个应用程序域中加载独立程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3136371/
我是一名优秀的程序员,十分优秀!