2012-03-15 113 views
4

我開發一個C#應用程序,我會在調試運行時出現以下錯誤:類型「System.IO.FileNotFoundException」的未處理的異常出現在未知模塊

類型的未處理的異常「System.IO .FileNotFoundException' 發生在未知模塊中。

其他信息:無法加載文件或程序集 「Autodesk.Navisworks.Timeliner.dll」或其某個依賴項。找不到指定的模塊 。

Autodesk.Navisworks.Timeliner.dll位於應用程序的調試文件夾中。我已修復.net框架(版本4),但它沒有解決它。有關如何解決此問題的任何想法?謝謝。

回答

5

首先檢查 - 是工作目錄,該應用程序在運行的目錄:

  • 你的項目上單擊右鍵,選擇屬性。
  • 單擊調試選項卡。
  • 確認工作目錄爲空或等於bin \ debug目錄。

如果這不是問題,那麼詢問Autodesk.Navisworks.Timeliner.dll是否需要另一個不在那裏的DLL。 如果Timeliner.dll不是.NET程序集,則可以使用命令實用程序DUMPBIN確定所需的導入。

dumpbin /imports Autodesk.Navisworks.Timeliner.dll 

如果是.NET程序集,則有許多工具可以檢查依賴關係。

Reflector已經被提及,並且我使用Telerik的JustDecompile


另見 this question

+0

我使用Net.reflector對dll進行了反編譯,查看了引用,並添加了所有必需的依賴關係。只有對'msorlib'的引用不能被添加,因爲它已被構建系統引用。發生過同樣的錯誤 – mj1261829 2012-03-16 00:23:01

+0

Reflector與JustDecompile相比有一些優勢請參閱編輯答案 – 2012-03-16 02:15:37

0

我會做的是使用這個工具,並逐步完成,你所得到的例外

http://www.reflector.net/

閱讀它會告訴你如何創建PDB的,所以你不必有你的所有引用建立。

http://www.cplotts.com/2011/01/14/net-reflector-pro-debugging-the-net-framework-source-code/

這是一個試驗,我對展鵬在所有我只是用有軟件我沒有關係。

+0

我使用Net.reflector反編譯dll,查看引用,並添加了所有必需的依賴關係。只有對'msorlib'的引用不能被添加,因爲它已被構建系統引用。發生了同樣的錯誤 – mj1261829 2012-03-16 01:12:09

+0

更新了我的答案以提供更多信息 – 2012-03-16 01:41:49

2

如果您是在64位系統上運行,並試圖加載32位的DLL,你需要編譯應用程序爲32位,而不是任何CPU。如果你不這樣做,它的行爲與你描述的完全一樣。

如果不是這種情況,請使用Dependency Walker來驗證dll是否具有其所需的依賴關係。

+0

我使用Net.reflector反編譯dll,查看引用並添加了所有必需的依賴關係。只有對'msorlib'的引用不能被添加,因爲它已被構建系統引用。發生同樣的錯誤 – mj1261829 2012-03-16 00:17:14

+0

在新機器上運行舊項目。這個答案讓我意識到所有這些都是由目標x64而不是x86導致的。 – JensB 2016-05-11 16:31:38

4

啓用VS此選項:僅我的代碼選項

工具 - >選項 - >調試 - >常規 - >啓用僅我的代碼(僅託管)

1

添加以下codesnippet在cofig文件

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
</startup> 
相關問題