我有使用AppDomain动态加载插件的代码。我有一个名为PluginFinder的私有内部类来完成这项工作。这一切都可以在生产环境中工作,但我现在正在尝试为它编写MS单元测试,并且我收到一个错误,说找不到程序集。需要明确的是,主类创建 AppDomain 并在其中运行 PluginFinder 以加载使用正确的接口找到的类。加载类后,控件将返回到默认的 AppDomain。插件查找器仅在加载期间使用。我使用下面的代码来创建环境: // Create a domain to text for plugins AppDomain domain = AppDomain.CreateDomain("PluginLoader"); // Set PluginFinder to run in the new domain (assemblyName, typeName) (PluginFinder)domain.CreateInstanceAndUnwrap( typeof(PluginFinder).Assembly.FullName, typeof(PluginFinder).FullName);PluginFinder使用默认构造函数,并且是一个私有内部类。我得到的例外如下: ------ Exception ------Error: Could not load file or assembly 'MyClass, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.There was an error creating the Plugin Loader.Could not load file or assembly 'MyClass, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
1 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
我不太确定NUnit在这里做什么,但问题可能是新的AppDomain的基目录不是你所期望的。在创建新域时,请考虑使用父域的设置信息或直接从当前域显式复制基:
AppDomain.CreateDomain("PlugInLoader", null, AppDomain.CurrentDomain.SetupInformation);
- 1 回答
- 0 关注
- 90 浏览
添加回答
举报
0/150
提交
取消