Dot-Net

無法載入文件或程序集系統找不到指定的文件

  • February 13, 2014

我正在建構一個引用第二個 dll 的 dll。我在第一個 dll 的項目中添加了第二個 dll 作為參考,方法是Properties > Common Properties > Framework and References > Add New Reference > Browse

我從第三方的原始碼編譯了第二個 dll。這兩個項目都是 C++/CLI。每當我的主應用程序嘗試呼叫第一個 dll 中包含對第二個 dll 的呼叫的函式時,我都會收到以下錯誤:

未知模組中發生了“System.IO.FileNotFoundException”類型的未處理異常。

附加資訊:無法載入文件或程序集“NBIS,版本=1.0.5156.29834,文化=中性,PublicKeyToken=null”或其依賴項之一。該系統找不到指定的文件。

我在與我的主 exe 相同的目錄中有第二個 dll 的副本,我什至嘗試在第一個 dll 旁邊保留一個副本,但無濟於事。

第二個 dll 引用了幾個靜態庫,但它包含的唯一程序集引用是

系統

System.Data

系統繪圖

系統.XML

所有這些我都作為程序集引用添加到第一個 dll 中。

我該怎麼做才能讓我的應用程序找到並載入第二個 dll?

正如評論中所指出的,SysInternals 的程序監視器是診斷 DLL 解析問題的寶貴工具。告訴您何時第三方 DLL 具有您不知道的依賴項,還告訴您 Windows 何時在硬碟驅動器的錯誤角落查找文件或找到錯誤的文件。

Loader snaps是 Windows 的內置診斷工具。但是程序監視器要方便得多。

它確實會生成相當多的資訊,從跟踪的底部開始或在正確的時間啟用跟踪。您經常需要使用它的過濾工具將消防水帶轉成相關的涓涓細流。值得你花時間去弄清楚,這個工具屬於任何程序員的黑帶。

引用自:https://stackoverflow.com/questions/21742777