它試圖找到的程序集不是根程序集 - 它是引用的程序集,但它位於相同的文件夾中,而Directory.GetCurrentDirectory()是包含所有文件的文件夾。試圖通過反射加載應用程序並出現錯誤「無法加載文件或程序集...系統找不到指定的文件。」
我是卡住了 - 有什麼建議?
它試圖找到的程序集不是根程序集 - 它是引用的程序集,但它位於相同的文件夾中,而Directory.GetCurrentDirectory()是包含所有文件的文件夾。試圖通過反射加載應用程序並出現錯誤「無法加載文件或程序集...系統找不到指定的文件。」
我是卡住了 - 有什麼建議?
您可以:
AppDomain
加載組件(和AppDomain
的基本目錄設置爲包含所有的組件的目錄)。AppDomain.AssemblyResolve
以幫助CLR找到程序集的依賴關係。你可以嘗試使用類似這樣的
string myDll = string.Empty;
string location = Assembly.GetExecutingAssembly().Location;
if (location != null)
{
myDll = string.Format(@"{0}\my.assembly.name.dll", location.Substring(0, location.LastIndexOf(@"\")));
}
這東西應該得到其中的組件運行的物理目錄。這可能在Windows .NET臨時目錄中。但是,由於文件處於相同的級別,因此它們應該並排存在。
如果使用assembly.loadfrom,則可以指定程序集的文件路徑。
負載從上下文允許從一個路徑加載的 組件不 包括在探測,並且還允許發現 並加載該路徑上 依賴性因爲路徑 信息由保持 上下文。
從引用dll的文件夾執行程序也可以解決問題。