2010-10-12 47 views
2

我有一个使用VS2008创建的项目。我试图用MSBuild 4.0来构建它,但仍然以3.5框架为目标。当我这样做时,我得到了以下例外:为什么在使用MSBuild 4.0编译.NET3.5项目时遇到BadImageFormatException

[exec] ResGen:error RG0000:无法加载引用程序集“C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ PresentationUI \ v4.0_4.0.0.0__31bf3856ad364e35 \ PresentationUI.dll”。捕获到一个BadImageFormatException,指出“无法加载文件或程序集”C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ PresentationUI \ v4.0_4.0.0.0__31bf3856ad364e35 \ PresentationUI.dll或其依赖项之一。比当前加载的运行时更新的运行时,并且无法加载。“

请注意,它试图加载PresentationUI.dll的4.0版本,即使我正在编译3.5框架。如果我将该项目转换为VS2010格式,这并不重要,错误也是一样的。

回答

3

问题原来是PresentationUI.dll程序集的HintPath与实际装配位置不匹配。在这种情况下,MSBuild又回到寻找GAC中的程序集。由于MSBuild 4.0在.NET 4.0运行时上运行,因此它会获取程序集的4.0版本,这与正在编译的3.5项目不兼容。

0

我得到了同样的问题,同时寻找在stackoverflow中的解决方案遇到了这个问题。最后在R & D我得到了解决方案。

删除旧引用并添加新引用(如果有)转到高级编译器选项并选择目标框架为4.0。 :)它工作享受。

0

此异常的另一个原因是目标平台在解决方案中的所有项目之间不匹配。例如,如果有几个项目的目标平台为x86,其余的则为x64,那么您将得到此异常。

相关问题