运行C#程序时出现System.BadImageFormatException错误

3

我正在Windows 7上使用VS 2010编译C#程序,然后在另一台32位机器上运行文件(所有文件都来自构建的bin \ Debug目录)。

Debug目录中的文件还包含此程序所依赖的Microsoft.Office.Project.Server.Library.dll文件。

在VS 2010项目的构建配置中,平台设置为x86。但在32位机器上,它会导致System.BadImageFormatException错误。

Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 
'Microsoft.Office.Project.Server.Library, Version=12.0.0.0, Culture=neutral, 
PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The module was expected to 
contain an assembly manifest. File name: 'Microsoft.Office.Project.Server.Library, 
Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'

这是什么原因呢?

1
开发机器上是否有其他依赖项(可能已安装在GAC中),而在部署的机器上却没有? - undefined
除了 System.* 引用之外,在 Visual Studio 项目的 "References" 部分中只有 Microsoft.Office.Project.Server.Library 条目。 - undefined
没错,但可能会存在依赖关系。我有几个(有点)大型项目使用了我在其他项目中创建的DLL。这些DLL本身又依赖于其他DLL,但在引用部分没有显示出这些依赖关系(因为“新”项目只能看到直接依赖,而不是“子”依赖)。你可能需要在目标机器上安装(重新安装?)项目服务器才能使其正常工作。 - undefined
2个回答

7

我认为这是x86和x64的问题。可执行文件是否依赖于其他x64库?


啊,尽管我将构建设置更改为x86,但我仍然复制了旧文件从bin\Debug而不是bin\x86\Debug目录下的文件。 - undefined
我从来没有见过 BadImageFormatException 有其他意思,除了 x32 vs x64。 - undefined

0
可能问题机器的.NET框架版本与构建机器不一致。

编译机器上安装了.NET Framework 4.0。目标机器上安装了.NET Framework版本2.0、3.0和3.5。让我在目标机器上安装4.0版本。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接