【发布时间】:2010-10-01 02:41:46
【问题描述】:
我正在尝试在 .Net 中开发插件架构。该应用程序将是一个 .Net 应用程序。会有包含插件的目录。每个目录将代表一个插件。每个插件目录也将包含所有依赖 dll。插件需要存储在单独的 AppDomain 中,因为插件可能使用相同的程序集,但版本不同。
当它遍历 Init() 中的 foreach 循环时,我得到一个 System.IO.FileNotFoundException:无法加载文件或程序集“[程序集名称],版本=1.0.0.0,文化=中性,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。 在 _apDomain.Load() 中用于不在主项目中的程序集。
代码:
readonly private AppDomain _appDomain;
internal ItemModuleAppDomain()
{
AppDomainSetup info = AppDomain.CurrentDomain.SetupInformation;
_appDomain = AppDomain.CreateDomain("ChildDomain");
}
public void Init(string dllDir)
{
string[] dlls = Directory.GetFiles(dllDir, "*.dll", SearchOption.TopDirectoryOnly);
foreach(string dll in dlls)
{
_appDomain.Load(AssemblyName.GetAssemblyName(dll));
}
知道为什么吗?我尝试了几种方法,例如将程序集读取为要加载的字节数组。
【问题讨论】: