未知模块中发生“System.IO.FileNotFoundException”类型的未处理异常
Posted
技术标签:
【中文标题】未知模块中发生“System.IO.FileNotFoundException”类型的未处理异常【英文标题】:An unhandled exception of type 'System.IO.FileNotFoundException' occurred in Unknown Module 【发布时间】:2012-03-15 23:23:19 【问题描述】:我正在开发一个 c# 应用程序,但在调试运行时出现以下错误:
“System.IO.FileNotFoundException”类型的未处理异常 发生在未知模块中。
附加信息:无法加载文件或程序集 “Autodesk.Navisworks.Timeliner.dll”或其依赖项之一。这 找不到指定的模块。
Autodesk.Navisworks.Timeliner.dll 位于应用程序的调试文件夹中。我已经修复了 .net 框架(版本 4),但它没有解决它。关于如何解决这个问题的任何想法?谢谢。
【问题讨论】:
【参考方案1】:在 VS 中启用此选项:仅我的代码选项
工具 -> 选项 -> 调试 -> 常规 -> 仅启用我的代码(仅限托管)
【讨论】:
【参考方案2】:首先检查 - 工作目录是应用程序运行所在的目录:
右键单击您的项目并选择属性。 单击“调试”选项卡。 确认工作目录为空或等于 bin\debug 目录。如果这不是问题,则询问 Autodesk.Navisworks.Timeliner.dll 是否需要另一个不存在的 DLL。
如果 Timeliner.dll 不是 .NET 程序集,您可以使用命令实用程序 DUMPBIN
确定所需的导入。
dumpbin /imports Autodesk.Navisworks.Timeliner.dll
如果是 .NET 程序集,有很多工具可以检查依赖关系。
Reflector
已经被提及,我使用 Telerik 的 JustDecompile
。
另见this question
【讨论】:
我使用 Net.reflector 反编译了 dll,查看了引用,并添加了所有必需的依赖项。只能添加对“msorlib”的引用,因为它已被构建系统引用。发生同样的错误 Reflector 比 JustDecompile 有一些优势,请参阅编辑后的答案【参考方案3】:如果您在 64 位系统上运行并尝试加载 32 位 dll,您需要将应用程序编译为 32 位而不是任何 cpu。如果您不这样做,它的行为与您描述的完全一样。
如果不是这样,请使用Dependency Walker 来验证 dll 是否具有所需的依赖项。
【讨论】:
我使用 Net.reflector 反编译了 dll,查看了引用,并添加了所有必需的依赖项。只能添加对“msorlib”的引用,因为它已被构建系统引用。发生同样的错误 在新机器上运行旧项目。这个答案让我意识到这一切都是由目标 x64 而不是 x86 引起的。【参考方案4】:在你的配置文件中添加以下代码n-p
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
【讨论】:
【参考方案5】:我会做的是使用这个工具并逐步检查你在哪里得到异常
http://www.reflector.net/
阅读本文,它将告诉您如何创建 PDB,因此您不必设置所有参考。
http://www.cplotts.com/2011/01/14/net-reflector-pro-debugging-the-net-framework-source-code/
这是一个试用版,我与 redgate 完全没有关系,我只是使用那里的软件。
【讨论】:
我使用 Net.reflector 反编译了 dll,查看了引用,并添加了所有必需的依赖项。只能添加对“msorlib”的引用,因为它已被构建系统引用。发生同样的错误 更新了我的答案以提供更多信息【参考方案6】:对我来说,它发生在一个 .net 项目中,结果与我的 Visual Studio 安装有关。我单独下载并安装了最新的.net core sdk,然后重新安装了VS,它就可以工作了。
【讨论】:
以上是关于未知模块中发生“System.IO.FileNotFoundException”类型的未处理异常的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 存储:发生未知错误,请检查错误负载以获取服务器响应