Wpf 为什么在使用MSBuild 4.0编译.NET3.5项目时会出现BadImageFormatException

Wpf 为什么在使用MSBuild 4.0编译.NET3.5项目时会出现BadImageFormatException,wpf,msbuild,Wpf,Msbuild,我有一个用VS2008创建的项目。我尝试使用MSBuild 4.0构建它,但仍然以3.5框架为目标。当我这样做时,我得到一个例外: [exec]ResGen:错误RG0000:无法加载引用的程序集“C:\WINDOWS\Microsoft.Net\assembly\GAC\U MSIL\PresentationUI\v4.0\U 4.0.0\UU 31bf3856ad364e35\PresentationUI.dll”。捕获到一个BadImageFormatException,该异常表示“无法加

我有一个用VS2008创建的项目。我尝试使用MSBuild 4.0构建它,但仍然以3.5框架为目标。当我这样做时,我得到一个例外:

[exec]ResGen:错误RG0000:无法加载引用的程序集“C:\WINDOWS\Microsoft.Net\assembly\GAC\U MSIL\PresentationUI\v4.0\U 4.0.0\UU 31bf3856ad364e35\PresentationUI.dll”。捕获到一个BadImageFormatException,该异常表示“无法加载文件或程序集'C:\WINDOWS\Microsoft.Net\assembly\GAC\U MSIL\PresentationUI\v4.0\U 4.0.0\Uu 31bf3856ad364e35\PresentationUI.dll'或其依赖项之一。此程序集由比当前加载的运行时更新的运行时生成,无法加载。”


请注意,它正在尝试加载PresentationUI.dll的4.0版本,尽管我是为3.5框架编译的。无论是否将项目转换为VS2010格式,错误都是一样的。

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

我也遇到了同样的问题,在stackoverflow中寻找解决方案时遇到了这个问题。经过研发,我终于找到了解决方案


删除旧引用并添加新引用(如果有)。转到高级编译器选项并选择目标框架作为4.0.:)这个异常的另一个原因是解决方案中所有项目的目标平台不匹配。例如,如果有几个项目的目标平台是x86,而其他项目的目标平台是x64,则会出现此异常