首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在另一个应用程序域中加载独立程序集

在另一个应用程序域中加载独立程序集
EN

Stack Overflow用户
提问于 2010-06-28 21:45:07
回答 2查看 3.3K关注 0票数 4

简单的问题,也许你很容易回答。

我的应用程序的输出文件夹中有一个名为"MigrationSteps.dll“的dll。我想要做的是在一个新的AppDomain中加载这个程序集,并在这个DLL中的一个类的实例上执行一个方法。

这是我的密码

代码语言:javascript
复制
       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

为什么这么说?

谢谢你抽出时间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-29 00:44:51

将“C:\Output\Debug\OptimeToolbench”添加到PrivateBinPath的AppDomain中。也不要传递文件名,传递程序集名称--我假设这将是MigrationSteps。

票数 3
EN

Stack Overflow用户

发布于 2010-06-28 22:01:06

AppDomain.Load(字符串)接受程序集名称(强名称)-而不是文件在磁盘上的路径!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3136371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档