我在VS 2005中编写了一个dll,它将由另一个在VS 2003中开发的程序加载。当该程序试图加载我的dll时,它会抛出一个System.BadImageFormatException: The format of the file 'Foo.dll' is invalid
。
我搜索了SO和Google,似乎不同版本的.NET是罪魁祸首。我的问题是:我该如何解决这个问题?
(我无法修改VS 2003中开发的程序。)
答案 0 :(得分:17)
当我运行64位版本的CLR并尝试加载仅标记为32位的程序集时,我收到此错误。在我的案例中,特定的程序集是Oracle.DataAccess.dll,它是ODP.NET的一部分。
答案 1 :(得分:14)
解决方案:如果您使用的是网站特定应用程序池上的IIS7,右键单击/高级设置,请在启用32位应用程序时选择True。它应该工作。
答案 2 :(得分:7)
使用与VS2003项目使用的相同.Net版本编译VS2005项目。 或者,根据VS2003项目的大小,反射器并重写它。对于这里的项目来说,这是常见的做法,由于某些不明原因,不再有VSS版本。