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