BadImageFormatException x64问题

Ken*_*ola 14 c# windows-services visual-studio-2010 badimageformatexception

我发誓微软"进化"的Visual Studio越多,整个过程就越无知.

我有一个带有3个类库的Windows服务.我进入了每个类库的属性,并将平台目标设置为x64.我对Windows服务以及我添加的测试控制台项目做了同样的事情来验证所有内容.

我可以在我的Windows 2008 R2 x64服​​务器上运行控制台应用程序,没有任何问题,但愚蠢的安装程序一直在轰炸并告诉我我的图像不好.我确实确保将安装程序的目标平台设置为x64.

我不知道这个愚蠢的事情会不会爆炸,并且非常感谢任何见解.我确实引用了其他的DLL,那些可能是x86,但我想如果主库已正确设置,事情会起作用......

Ken*_*ola 24

我终于弄明白了 - 它与架构,引用或任何其他废话无关,而且与安装程序本身有关.正如本文所述 - http://blogs.msdn.com/b/heaths/archive/2006/02/01/64-bit-managed-custom-actions-with-visual-studio.aspx - Visual Studio Installer,默认情况下,使用32位DLL,这是导致失败的原因.

要解决此问题,只需按照以下步骤操作:

  1. 确保进入每个项目的Properties => Build选项卡,并将Target Platform设置为x64
  2. 单击安装项目的名称,然后单击属性,并确保目标平台是x64
  3. 构建解决方案 - 如果解决方案无法编译,请右键单击"卸载项目",然后单击"加载项目"以获取其引用失败的项目.
  4. 转到http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=3138并下载并安装7.0 INstaller SDK
  5. 进入C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bin文件夹,双击Orca.Msi文件安装Orca
  6. 运行Orca并打开项目的MSI文件夹
  7. 选择二进制表
  8. 双击单元格[二进制数据]以获取记录InstallUtil
  9. 确保选中"从文件名读取二进制文件"
  10. 单击"浏览"按钮浏览到C:\ Windows\Microsoft.NET\Framework64\v4.0.30319
  11. 选择InstallUtilLib.dll
  12. 单击"打开"按钮,然后单击"确定"按钮

就是这样 - 在Orca中保存你的MSI文件然后部署它 - x64安装应该没有任何进一步的问题.

  • 顺便说一句,感谢MS婴儿的低票 - 这是一个合法的问题以及许多其他的MS问题,而且你无法忍受可靠的批评这一事实说明了你. (7认同)
  • 谢谢肯,最后一个有效的解决方案.我有个问题.是否可以自动将其作为后期制作事件?每次发布时,为数十个安装程序手动执行此操作非常耗时... (2认同)
  • @KenGey - 是的,你可以将其作为一个构建后的事件自动化; 请参阅http://stackoverflow.com/a/6797989/1843329下的评论.或者直接访问https://code.msdn.microsoft.com/windowsdesktop/CSBrowserHelperObject-59c189a2#content了解详细信息. (2认同)