Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 程序集引用-System.BadImageFormatException错误_.net - Fatal编程技术网

.net 程序集引用-System.BadImageFormatException错误

.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

我引用的是在.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 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。