发生了一个未处理的异常类型为 'System.IO.FileNotFoundException' 的异常,在未知模块中。

15
我正在开发一个C#应用程序,在调试运行时遇到以下错误:
“System.IO.FileNotFoundException”类型的未处理异常在未知模块中发生。
附加信息:无法加载文件或程序集“Autodesk.Navisworks.Timeliner.dll”或其某个依赖项。指定的模块无法找到。
Autodesk.Navisworks.Timeliner.dll在应用程序的调试文件夹中。我已经修复了.NET Framework(版本4),但没有解决它。有任何解决此问题的想法吗?谢谢。
6个回答

13

在VS中启用此选项:只调试自己的代码

工具 -> 选项 -> 调试 -> 通用 -> 启用仅限我的代码 (仅托管代码)


8

首先确认——工作目录是否为应用程序所在的目录:

  • 右键单击您的项目,选择属性。
  • 点击调试选项卡。
  • 确认工作目录为空或等于bin\debug目录。

如果这不是问题所在,则请问Autodesk.Navisworks.Timeliner.dll是否需要另一个不存在的DLL。 如果Timeliner.dll不是.NET程序集,则可以使用命令实用程序DUMPBIN确定所需的导入。

dumpbin /imports Autodesk.Navisworks.Timeliner.dll

如果这是一个.NET程序集,那么有很多工具可以检查依赖项。

Reflector已经被提到过了,我使用的是Telerik的JustDecompile


还可以参考这个问题


我使用Net.reflector反编译了dll,查看了引用,并添加了所有必需的依赖项。由于已被构建系统引用,因此无法添加对“msorlib”的引用。出现了相同的错误。 - mj1261829
反射器相对于JustDecompile有一些优势,详见修改后的回答。 - Micah Armantrout

4
如果你在64位系统上运行并尝试加载32位dll,则需要将应用程序编译为32位而不是任何CPU。如果你没有这样做,它会完全按照你描述的方式行事。
如果不是这种情况,请使用Dependency Walker验证dll是否具有其所需的依赖项。

我使用Net.reflector反编译了dll,查看了引用,并添加了所有必需的依赖项。只有对“msorlib”的引用无法添加,因为它已经被构建系统引用。出现了相同的错误。 - mj1261829
在新机器上运行旧项目。这个答案让我意识到所有这些问题都是由于目标 x64 而不是 x86 引起的。 - JensB

2
请在您的配置文件中添加以下代码段:
<startup useLegacyV2RuntimeActivationPolicy="true">
   <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

0

对我来说,这是在一个 .net 项目中发生的,并且最终证明与我的 Visual Studio 安装有关。我单独下载并安装了最新的 .net core sdk,然后重新安装了 VS,问题得到了解决。


0

使用 Net.reflector 反编译了 DLL,查看了引用,并添加了所有所需的依赖项。只有对 'msorlib' 的引用无法添加,因为它已经被构建系统引用了。发生了相同的错误。 - mj1261829
更新了我的答案,提供了更多信息。 - Micah Armantrout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接