我有一個程序集,名爲實驗室,它由作爲解決方案一部分的項目構建。此程序集包含一個對象,我想使用來自同一解決方案上的其他程序集的反射來訪問該對象。 在其他組件(被叫BL)我有以下代碼:未能加載程序集C#
Assembly assembly = Assembly.Load("Lab");
的問題是,它是扔FileNotFoundException
除非我添加嘗試從實驗室組件發起的對象的行代碼中的任何地方。 就好像編譯器將實驗室程序集加載到Assembly.Load
函數的可識別位置。
這確實讓我困惑, 我試圖通過全集名稱 而且還試圖組裝的絕對路徑傳遞給Assembly.LoadFrom
但無濟於事,同樣的問題在所有情況下。
我試圖訪問對象槽反射而不是僅僅引用它的原因是因爲代碼是將被隔離的模塊的一部分。然後反射的DLL(在這種情況下Lab.dll)將在運行時動態傳遞。
解決方案
事實上,正如阿夫納解釋,我懷疑,大會並沒有複製到項目的文件夾,因爲沒有使用它的任何代碼。 進一步證明程序集丟失的是FusionLog中的Lordkain在註釋中提到的異常。
由於該項目的想法是在將來使用通過的Assembly Path,因此我剛剛採取了相應的措施,而不是Avner建議的解決方案。 因此,通過使用該組件的路徑,而不是程序集的名稱與方法:
Assembly.LoadFrom(*Assembly Path*);
我工作圍繞缺少的裝配問題。
對你有幫助https://indexoutofrange.com/Could_not_load_file_or_assembly_or_one_of_its_dependencies/ – lordkain
你需要指定程序集名稱的長形式。例如'System,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089' – DavidG