C# 未知模块中发生“System.IO.FileNotFoundException”类型的未处理异常

C# 未知模块中发生“System.IO.FileNotFoundException”类型的未处理异常,c#,exception,runtime,C#,Exception,Runtime,我正在开发一个c应用程序,在调试运行时出现以下错误: “System.IO.FileNotFoundException”类型的未处理异常 发生在未知模块中 其他信息:无法加载文件或程序集 “Autodesk.Navisworks.Timeliner.dll”或其依赖项之一。这个 找不到指定的模块 Autodesk.Navisworks.Timeliner.dll位于应用程序的调试文件夹中。我已经修复了.net framework版本4,但它没有解决它。关于如何解决这个问题有什么想法吗?谢谢 我要

我正在开发一个c应用程序,在调试运行时出现以下错误:

“System.IO.FileNotFoundException”类型的未处理异常 发生在未知模块中

其他信息:无法加载文件或程序集 “Autodesk.Navisworks.Timeliner.dll”或其依赖项之一。这个 找不到指定的模块


Autodesk.Navisworks.Timeliner.dll位于应用程序的调试文件夹中。我已经修复了.net framework版本4,但它没有解决它。关于如何解决这个问题有什么想法吗?谢谢

我要做的是使用此工具并逐步了解您将从何处获得异常

阅读本文,它将告诉您如何创建PDB,这样您就不必设置所有参考


这是一个试用版,我与redgate没有任何关系,我只是使用了redgate软件。

首先检查-工作目录是运行应用程序的目录吗:

在项目上单击鼠标右键,然后选择“属性”。 单击调试选项卡。 确认工作目录为空或等于bin\debug目录。 如果这不是问题,请询问Autodesk.Navisworks.Timeliner.dll是否需要另一个不存在的dll。 如果Timeliner.dll不是.NET程序集,则可以使用命令实用程序DUMPBIN确定所需的导入

如果它是.NET程序集,则有许多工具可以检查依赖项

反射器已经提到了,我使用的是来自Telerik的JustDecompile。
另请参见

如果您在64位系统上运行并试图加载32位dll,则需要将应用程序编译为32位而不是任何cpu。如果您不这样做,它的行为与您描述的完全相同


如果不是这种情况,请使用验证dll是否具有所需的依赖项。

在VS:Just My Code选项中启用此选项


工具->选项->调试->常规->仅启用我的代码仅管理

在cofig文件中添加以下代码段

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

对我来说,它发生在一个.net项目中,结果与我的Visual Studio安装有关。我分别下载并安装了最新的.net core sdk,然后重新安装了VS,它成功了。

我使用net.reflector反编译了dll,查看了引用,并添加了所有必需的依赖项。只能添加对“msorlib”的引用,因为生成系统已经引用了它。在新机器上运行旧项目时也会发生相同的错误。这个答案让我意识到所有这些都是由目标x64而不是x86引起的。我使用Net.reflector反编译了dll,查看了引用,并添加了所有必需的依赖项。只能添加对“msorlib”的引用,因为生成系统已经引用了它。同一个错误的发生reflector与JustDecompile相比有一些优势请参见编辑的回答我使用Net.reflector反编译了dll,查看了引用,并添加了所有必需的依赖项。只能添加对“msorlib”的引用,因为生成系统已经引用了它。同样的错误也发生在我的回答中,以提供更多信息
<startup useLegacyV2RuntimeActivationPolicy="true">
   <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>