【发布时间】:2014-03-10 16:18:34
【问题描述】:
在运行具有 Any CPU 配置的 C#/VB SmartClient 应用程序时,我得到一个 BadImageFormatException。如果我使用x86 配置,那么它运行良好。这是一个旧的遗留项目,我偶尔需要修改它并且我不知道历史,所以我只能猜测包含 32 位本机代码的 dll 会导致此错误。这一切都是有道理的,除了当配置为Debug & AnyCPU 时它运行,只有当配置为Release & AnyCPU 时它才会失败。我发现 Debug.cfg.xml 和 Release.cfg.xml 文件没有显着差异。
谁能说出为什么它会在Debug 配置中运行?由于这行得通,我想知道是否有可能让它在 x64(即 AnyCPU)中运行
来自 app.config:
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
【问题讨论】:
-
使用 AnyCPU 构建“旧”.NET 应用程序但从未在 64 位操作系统上实际测试过的情况很常见。并且依赖于 32 位本机代码。当然,将目标更改为 x86 是正确的做法。不是解决方案的平台名称,它无关紧要,唯一重要的是 EXE 项目的设置,项目 + 属性,构建选项卡。
-
您是通过 IDE 在调试模式下运行,还是在调试模式下构建并直接启动应用程序?
-
IDE 中的调试模式 (Visual Studio 2010)
标签: c# vb.net badimageformatexception