我们正在其中一个64位Windows服务器中安装第三方应用程序。这个应用程序显然是在编译器选项设置的基础上构建的,以便在运行时选择平台。当我们运行应用程序时,它会给我们一个错误:
System.BadImageFormatException: is not a valid Win32 application.
我在MSDN论坛上看到,为了修复此错误,我必须将应用程序集构建为32位,这样它就能在64位服务器上正常运行。我查看其他StackOverflow链接Other Posts。
如何解决这种情况?对于想要了解更多信息的每个人:
答案 0 :(得分:4)
一种可能性是应用程序依赖于需要以32位模式运行的非托管DLL。由于默认的“AnyCPU”.NET构建会自动检查平台,因此程序的.NET部分以64位模式启动。这将导致对仅32位非托管DLL的调用失败。
要修复它,您需要创建一个清单文件,告诉应用程序以32位模式运行。我自己从来不需要这样做,所以我无法提供说明,而且谷歌的快速搜索还没有发现任何内容。
[更新]
看看这个链接是否有帮助:
http://msdn.microsoft.com/en-us/library/aa374191.aspx
答案 1 :(得分:3)
我不确定这会有所帮助,但请查看:
http://msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx
答案 2 :(得分:-1)
问题的细节有点令人困惑,但我会采取行动。
您需要在运行此代码的网站上找到Framework \ v2.0.50727 \文件夹中的aspnet_regiis.exe版本
答案 3 :(得分:-1)
可能有用的一件事是确保通过更改目标CPU详细信息将.Net应用程序标记为真正的32位应用程序。
在 Visual Studio 2005 中,您可以通过转到项目属性并在 Build 部分设置平台来执行此操作将定位到 x86 而不是任何APU ,这是默认设置。