2011-01-05 31 views
23

我有一個項目使用了使用IKVM轉換的Java庫。我加入了創建DLL加上所有可能的IKVM的DLL爲我的項目的引用,但是當我運行它,我得到以下運行時錯誤:如何調試「無法加載文件或程序集」運行時錯誤?

System.IO.FileNotFoundException : Could not load file or assembly 'core, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

我真的不知道如何調試這個錯誤。有沒有辦法確切知道哪種類型丟失?從描述我猜這是生成的DLL(來自Java庫),但我已經正確地添加它作爲參考。

我還做了什麼錯?

+0

所以我不會提交答案。缺少的.DLL不會拋出IOexception。 .DLL更有可能讀取某種文件(配置或其他)並丟失它。你應該檢查這個IKVM的手冊。 – 2011-01-05 10:47:47

+2

「彙編」標籤用於彙編語言編程。我刪除了它,希望你不介意。 – Jester 2011-01-05 15:39:37

+0

好主意,但我想你忘了添加最適合這篇文章的ikvm標籤;) – 2011-01-05 15:51:51

回答

20

您可以使用Fusion Log Viewer來調試.NET應用程序中的程序集加載問題。

另外,Process Monitor在識別一般的文件加載問題時非常有用。

2

有一個名爲Dependency Walker的程序,它允許您查看給定PE文件(dll,exe,ocx ...)的依賴關係。

這個錯誤真的很煩人,很難調試。你必須確保你的DLL是存在的以及任何依賴這個DLL有。這個關鍵點通常是頭痛發作的地方。

+7

依賴walker會解析本地依賴。這看起來像一個託管的依賴性問題。 – 2011-01-05 15:55:16

5

您可以使用Fusion Log Viewer(可在Microsoft SDK中獲得)來診斷。 以管理員身份啓動並在設置中激活日誌。

它會記錄所有關於您的引用加載(及其所有引用)的信息。 它會明確告訴你哪個引用缺失以及它在哪裏搜索它。

MSDN on Fusion Log Viewer

0

使用ProcessMonitor(從Sysinternals套件),你可以看到哪些DLL你的過程是尋找合適的拋出異常之前。

6

只是在那個依賴walker和fusion日誌查看器中尋找工作,對於那些本地代碼和託管代碼在一起的應用程序,或者在執行本地代碼的動態加載時都不太好。這裏是一個很好後使用過程監控覆蓋這些場景解釋如何一步一步來解決缺失(或無效許可)裝配錯誤:

Debug Could not load file or assembly or one of its dependencies error with Process Monitor

的職位還包括一個工具,一些這方面的任務自動化爲well

相關問題