2010-09-03 101 views
5

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

当我运行从构建这个web应用程序,我得到的错误:

Could not load file or assembly 'BLAH_BLAH_WEB_APPLICATION_NAME.XmlSerializers' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

我们正在使用的MSBuild .proj文件于2008年TFS下工作(使用打造的“升级模板”定义)。我看到了this questionthis one,但那些提到使用特定的SGen构建步骤。我们不是。此外,所提出的解决方案涉及对7.0A SGen的路径进行硬编码,这很难看。

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

+0

您是否将序列化程序项目上的目标框架设置为3.5?检查项目属性。 – Robaticus 2010-09-03 14:27:31

+0

我不确定“串行器项目”是什么意思。使用Web引用的项目本身的目标是3.5。是否有另一个Web引用的设置? – 2010-09-07 13:19:44

回答

4

根问题是注册表中的一个无效值。在HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的MSBuild \ ToolsVersions的SDK35ToolsPath值\ 4.0是:

$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\[email protected])

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

$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\[email protected])

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

相关问题