TFS 2010为.Net 3.5应用程序创建.Net 4.0 XmlSerializers DLL。
TFS 2010为.Net 3.5应用程序创建.Net 4.0 XmlSerializers DLL。
我们有一个在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程序集?
问题描述:TFS 2010创建了一个针对.Net 3.5应用程序的.Net 4.0 XmlSerializers DLL。
问题原因:在TFS 2010中创建的项目默认使用的是.Net 4.0版本,因此生成的XmlSerializers DLL也是针对.Net 4.0的。然而,如果需要将该DLL用于一个使用.Net 3.5的应用程序中,就会出现兼容性问题。
解决方法:通过设置参数`SGenToolPath`来解决该问题。
具体解决步骤如下:
1. 打开TFS 2010中的项目。
2. 在项目的属性设置中找到生成(Build)选项。
3. 在生成选项中,找到“其他生成选项”(Additional Build Options)。
4. 在“其他生成选项”中,添加以下参数:`/p:SGenToolPath="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"`。
5. 保存并重新生成项目。
通过以上步骤,我们可以设置`SGenToolPath`参数来指定XmlSerializer生成工具的路径,从而解决TFS 2010创建的.Net 4.0 XmlSerializers DLL无法在.Net 3.5应用程序中使用的兼容性问题。