【问题标题】:TFS 2010 creating .Net 4.0 XmlSerializers DLL for .Net 3.5 ApplicationTFS 2010 为 .Net 3.5 应用程序创建 .Net 4.0 XmlSerializers DLL
【发布时间】:2011-04-07 20:35:33
【问题描述】:

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

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

无法加载文件或程序集 'BLAH_BLAH_WEB_APPLICATION_NAME.XmlSerializers' 或其依赖项之一。这 程序集由更新的运行时构建 比当前加载的运行时和 无法加载。

我们正在使用在 TFS 2008 下运行的 msbuild .proj 文件(使用构建定义中的“升级模板”)。我看到了this questionthis one,但那些提到使用特定的 SGen 构建步骤。我们不是。此外,建议的解决方案涉及对 7.0A SGen 的路径进行硬编码,这只是……丑陋。

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

【问题讨论】:

  • 你是否将序列化程序项目上的目标框架设置为3.5?检查项目属性。
  • 我不确定您所说的“序列化程序项目”是什么意思。使用 Web 引用本身的项目的目标是 3.5。网络引用是否有其他设置?

标签: .net visual-studio-2010 msbuild tfsbuild


【解决方案1】:

我通过设置名为 SGenToolPath 的参数解决了这个问题

/p:SGenToolPath="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"

【讨论】:

    【解决方案2】:

    根本问题是注册表中的值无效。 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 2011-05-20
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多