2012-03-15 115 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> 
相关问题