BadImageFormatException 未处理

Posted

技术标签:

【中文标题】BadImageFormatException 未处理【英文标题】:BadImageFormatException was unhandled 【发布时间】:2013-12-02 20:46:06 【问题描述】:

在 Windows 8 64 位上编译或尝试运行我的应用程序时抛出“BadImageFormatException”。我搜索了互联网,很多人都有相同的错误信息。但是,没有一个解决方案可以解决我的问题或情况。我正在使用 Visual Studio 2012 Express。

错误信息

错误 38 无法加载文件或程序集“file:///C:/Projects/Windows Projects/Weld/Components/FileAttachments/FileAttachments/FileAttachments/bin/x86/Debug/FileAttaching.dll”或其依赖项之一.试图加载格式不正确的程序。

我确实有一些 C++ dll,而且大多数 dll 都在 C# 中。有些 dll 是在 32 位机器上编译的,我使用的是 64 位机器。

【问题讨论】:

当 dll 编译为 32 位和 64 位(混合)时,我偶然发现了这一点。所有的 dll 编译的都一样吗? @gleng 我在 64 位机器上确实有一些 32 位和一些 64 位 dll。谢谢将更新问题。 【参考方案1】:

此错误BadImageFormatException 始终意味着您尝试将 32 位 DLL 加载到 64 位应用程序中,或者您尝试将 64 位 DLL 加载到 32 位应用程序中。

有时当您为 AnyCPU 编译时也会发生这种情况,因此如果您的 DLL 以特定平台为目标,您可能希望您的项目以该特定平台为目标。

在您当前的情况下,FileAttaching.dll 可能是 64 位 DLL,因此我建议您检查您是否在此项目上输出 32 位 DLL 或使用正确的 32 位版本。

【讨论】:

以上是关于BadImageFormatException 未处理的主要内容,如果未能解决你的问题,请参考以下文章

BadImageFormatException 故障排除

pinvoke c 函数 - System.BadImageFormatException

WCF 服务 BadImageFormatException

System.BadImageFormatException:如何修复 .NET 版本不匹配?

System.BadImageFormatException

.NET 程序集中 BadImageFormatException 的替代原因?