System.BadImageFormatException:如何修复.NET版本不匹配?

时间:2009-05-05 17:29:18

标签: .net visual-studio visual-studio-2005 visual-studio-2003

我在VS 2005中编写了一个dll,它将由另一个在VS 2003中开发的程序加载。当该程序试图加载我的dll时,它会抛出一个System.BadImageFormatException: The format of the file 'Foo.dll' is invalid

我搜索了SO和Google,似乎不同版本的.NET是罪魁祸首。我的问题是:我该如何解决这个问题?

(我无法修改VS 2003中开发的程序。)

3 个答案:

答案 0 :(得分:17)

当我运行64位版本的CLR并尝试加载仅标记为32位的程序集时,我收到此错误。在我的案例中,特定的程序集是Oracle.DataAccess.dll,它是ODP.NET的一部分。

答案 1 :(得分:14)

解决方案:如果您使用的是网站特定应用程序池上的IIS7,右键单击/高级设置,请在启用32位应用程序时选择True。它应该工作。

答案 2 :(得分:7)

使用与VS2003项目使用的相同.Net版本编译VS2005项目。 或者,根据VS2003项目的大小,反射器并重写它。对于这里的项目来说,这是常见的做法,由于某些不明原因,不再有VSS版本。