我試圖在.Net中開發一個插件體系結構。該應用程序將是一個.Net應用程序。將會有保存插件的目錄。每個目錄將代表一個插件。每個插件目錄也包含所有依賴項dll。插件需要存儲在單獨的AppDomain中,因爲插件可能使用相同的程序集,但版本不同。子AppDomain(.Net)中的後期綁定
因爲它通過foreach循環在初始化()迭代,得到了一個 System.IO.FileNotFoundException:未能加載文件或程序「[大會名稱],版本= 1.0.0.0,文化=中性公鑰= 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));
}
任何想法,爲什麼?我嘗試了幾種方法,例如將程序集讀取爲要加載的字節數組。
謝謝。我們最終強烈命名了這些dll,因此我們可以將它們加載到同一個AppDomain中。 – Anish 2010-10-29 16:46:10