0
我試圖組件加載到一個新的領域, 但我不斷收到一個錯誤,指定的文件不能被發現,與引用的DLL
注意裝載程序集,我有一個名爲「擴展」目錄包含文件夾「檢查」裏面包含了一些DLL的
的「System.IO.FileNotFoundException:未能加載文件或程序集‘InspectBLL,版本= 1.0.0.0,文化=中立,公鑰=空’」 我目前做以下工作
public AppDomain GetAppDomain(DirectoryInfo dir, string domainName)
{
var assemblydll = dir.GetFiles().FirstOrDefault(x => x.Name.Contains("ServerDLL"));
AppDomainSetup domaininfo = new AppDomainSetup();
domaininfo.ApplicationBase = dir.FullName;
AppDomain domain = AppDomain.CreateDomain(domainName, null, domaininfo);
foreach (var item in dir.GetFiles())
{
var bytes = File.ReadAllBytes(item.FullName);
domain.Load(bytes);
}
return domain;
}
我發現的新信息,似乎它正在尋找.exe所在的DLL,這是不好的。 (我coppied的dll文件exe文件的所有工作,但我需要它是在文件夾擴展\檢查)
解決這個問題那麼什麼文件被它試圖加載?你有沒有試過在線搜索錯誤?你能迴應item.fullname並檢查它存在嗎? –
它確實存在,因爲我使用DirectoryInfo,我確實檢查了哪個文件,並且該文件確實存在於文件夾中,Im編輯帖子以獲取更多信息 –
使用Assembly.Load(byte [])通常是一個非常糟糕的主意,程序集在沒有加載上下文的情況下被加載所以CLR在查找相關程序集時會遇到很多麻煩。它當然不會知道這樣的程序集也存在於* dir *中。除*不*執行此操作外,請使用Fuslogvw.exe解決程序集解析問題,AppDomain.AssemblyResolve可幫助CLR找到它們。 –