我发誓 Microsoft 对 Visual Studio 的“进化”越多,整个过程就越无知。
我有一个包含 3 个类库的 Windows 服务。我进入每个类库的属性并将平台目标设置为 x64。我对 Windows 服务以及我添加的测试控制台项目执行了同样的操作以验证所有内容。
我可以在我的 Windows 2008 R2 x64 服务器上运行控制台应用程序,没有任何问题,但是愚蠢的安装程序不断地爆炸并告诉我我的形象不好。我确实确保已将安装程序的目标平台设置为 x64。
我不知道这个愚蠢的东西会被炸毁,真的很感激任何见解。我确实引用了其他 DLL,这些 DLL 可能是 x86,但我认为如果正确设置了主库,事情就会起作用......
最佳答案
我终于弄明白了——它与架构、引用或任何其他废话无关,而与安装程序本身有关。 As this article explains – 默认情况下,Visual Studio 安装程序使用 32 位 DLL,这就是导致失败的原因。
要克服这个问题,只需按照以下步骤操作:
- 确保进入每个项目的“属性”⇒“构建”选项卡并将目标平台设置为 x64
- 单击安装项目的名称,然后单击属性并确保目标平台是 x64
- 构建您的解决方案 - 如果解决方案无法编译,请右键单击并卸载项目,然后为那些引用失败的项目加载项目。
- Go here并下载并安装 7.0 INstaller SDK
- 进入 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin 文件夹,双击 Orca.Msi 文件安装 Orca
- 运行 Orca 并打开项目的 MSI 文件夹
- 选择二进制表
- 双击[Binary Data]单元格记录InstallUtil
- 确保选择“从文件名读取二进制文件”
- 单击浏览按钮浏览到 C:\Windows\Microsoft.NET\Framework64\v4.0.30319
- 选择 InstallUtilLib.dll
- 单击“打开”按钮,然后单击“确定”按钮
就是这样 - 将您的 MSI 文件保存在 Orca 中,然后部署它 - x64 安装应该可以正常工作,没有任何其他问题。
关于c# - BadImageFormatException x64 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10275106/