.net 程序集引用-System.BadImageFormatException错误
我引用的是在.NET3.5项目中基于.NET2.0构建的程序集。它在Windows xp机器上工作正常,但在Win2003 64位上部署时 我得到下面的错误.net 程序集引用-System.BadImageFormatException错误,.net,.net,我引用的是在.NET3.5项目中基于.NET2.0构建的程序集。它在Windows xp机器上工作正常,但在Win2003 64位上部署时 我得到下面的错误 System.BadImageFormatException: Could not load file or assembly 'Wrapper, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was
System.BadImageFormatException: Could not load file or assembly 'Wrapper, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.
WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
该项目是建立在winxp32位机器上,然后使用wix安装程序部署,尝试手动更换程序集,但没有工作 您应该检查
包装程序
程序集的生成属性。我怀疑它设置为32位(x86)。要加载到64位CLR中,您需要它是AnyCpu或x64
现在,如果它实际上是非托管代码的包装器,那么您可能需要两个不同版本的程序集—一个用于32位,另一个用于64位
另一种选择是将应用程序更改为32位。目前还不清楚您运行的是哪种应用程序,或者这是否合适,但值得考虑。可能重复:嗨,John,在32位系统上运行它没有问题。所以我相信这个程序集是32位版本。@RAJ:不要只是“相信”它——检查它。查看文件,例如,使用ildasm,检查元数据部分中的
.corflags
。解决问题,使用corflags.exe查找标题,解决问题,我正在引用的Assemly是PE32。当我在32位系统上编译执行程序集并通过DEV-box(server200364位)复制它时,它工作正常。我使用的是TeamCity,构建机器也是64位的,所以执行汇编是在64位系统上编译的,平台选项是anycpu。现在我需要建议解决它的最佳方法。@RAJ:将可执行文件上的/platform选项更改为x86(32位),然后它应该使用32位CLR。