TFS 2010为.Net 3.5应用程序创建.Net 4.0 XmlSerializers DLL

dav*_*ase 5 .net msbuild team-build visual-studio-2010

我们有一个在Visual Studio 2010中运行的ASP.Net Web应用程序,目标是.Net 3.5.它是由TFS 2010构建的.这个Web应用程序有几个Web引用,因此构建会创建一个相关的XmlSerializers DLL.但是,此DLL是.Net 4.0程序集.

当我从构建运行此Web应用程序时,我收到错误:

无法加载文件或程序集"BLAH_BLAH_WEB_APPLICATION_NAME.XmlSerializers"或其中一个依赖项.此程序集由比当前加载的运行时更新的运行时构建,无法加载.

我们正在使用在TFS 2008下工作的msbuild .proj文件(使用构建定义中的"升级模板").我看到了这个问题,这一个,但使用特定的SGEN生成步骤那些提.我们不是.此外,建议的解决方案涉及硬编码7.0A SGen的路径,这只是......丑陋.

有没有办法强制TFS 2010构建将此XmlSerializers DLL编译为.Net 3.5程序集?

dav*_*ase 4

根本问题是注册表中的值无效。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0 下的 SDK35ToolsPath 值为:

$(注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx35Tools-x86@InstallationFolder)

但是,构建服务器的 Windows SDK 版本为 7.1。因此,我将值更正为:

$(注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKNetFx35Tools@InstallationFolder)

然后 XmlSerializers DLL 现在使用 .Net 2.0。