【问题标题】:TFSBuild 2013 unable to change msbuild versionTFSBuild 2013 无法更改 msbuild 版本
【发布时间】:2017-01-29 03:40:40
【问题描述】:

我有一个 TFSBuild 2013 服务器,我们现在正尝试使用它来构建 UWP 项目,但我们似乎无法让它使用正确的 MSBuild 版本。

症状:

在构建 UWP 项目时,我们会遇到很多这样的错误: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets (283):尝试对“10.0.11000.0”进行数值比较,结果改为“10.0.11000.0”一个数字,条件为“'$(TargetPlatformVersion)' >= '10.0.11000.0'”。

很多关于此错误的报告都告诉您确保 TFS Build 使用的是正确版本的 MSBuild。这就是问题所在。我们似乎无法让构建服务器使用正确的版本。

这是我们尝试过的(构建定义使用 TfvcTemplate.12.xaml 模板):

  • 在构建服务器上安装 2015 构建工具(更新 3)
  • 在构建服务器上安装 VS2015 (Yuck)
  • 构建定义中的各种 MSBuild 参数组合。 (/tv:14.0 & /p:VisualStudioVersion=14.0)
  • 包含 Microsoft.Net.Compilers nuget 包
  • 编辑 TfvcTemplate.12.xaml 模板并设置“运行 MSBuild”步骤以将“ToolsVersion”设置为“14.0”。 (注意,这个版本的模板中没有“ToolsPath”设置,所以我不能这样做)。
  • 在每个 .csproj 文件中设置 ToolsVersion="14.0"

无论我们如何更改,我们都无法让 Build Agent 使用 14.0 版本的 MSBuild。

奇怪的是,nuget 在进行包还原时似乎找到了正确的版本。在日志中,我们在运行 nuget.exe 恢复命令时看到:MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'。

但在日志的更下方,我们会看到所有错误开始的地方(注意:错误的工具版本): C:\Program Files (x86)\MSBuild\12.0\bin\MSBuild.exe /nologo /noconsolelogger "C:\Builds..." [SNIP]

任何帮助或建议都非常感谢 - 我无能为力:)

【问题讨论】:

  • 您能否在您的构建代理机器上使用 MSBuild 命令行手动构建您的项目?您是否在构建定义中指定了 MSBuild 参数 /p:AppxBundlePlatforms="$(BuildPlatform)" /p:AppxPackageDir="$(Build.BinariesDirectory)\AppxPackages\\" /p:AppxBundle=Always?
  • 是的,在服务器上使用 VS2015 构建解决方案工作正常。
  • 如果我们可以强制 TFSBuild 始终使用 14 版本的 MSBuild,我们会很高兴。我们可以强制它默认这样做吗?

标签: c# visual-studio tfs msbuild uwp


【解决方案1】:

我最终放弃了尝试通过配置使其行为,但通过破解注册表设法使其在构建机器上运行。

我更改了以下注册表项:

HKLM\SOFTWARE\Wow6432Node\Microsoft\MSBuild\12.0\MSBuildOverrideTasksPath
HKLM\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\12.0\MSBuildToolsPath

在这两种情况下,我都更改了值

来自:

C:\Program Files (x86)\MSBuild\12.0\bin\

到:

C:\Program Files (x86)\MSBuild\14.0\bin\

免责声明:我不知道这会产生什么其他影响,但它使用正确的 MSBuild 版本进行构建,并且范围仅限于构建服务器。

【讨论】:

    【解决方案2】:

    编辑 TfvcTemplate.12.xaml 模板并设置“运行 MSBuild”步骤以将“ToolsVersion”设置为“14.0”。

    如果您还在 MSBuild 12.0 配置文件中添加以下部分,这将起作用(如 here 所述)

    <msbuildToolsets>
        <toolset toolsVersion="14.0">
            <property name="MSBuildToolsPath" value="C:\Program Files (x86)\MSBuild\14.0\Bin\" />
        </toolset>
    </msbuildToolsets>
    

    请注意在 MSbuild\bin 目录下还有 amd64 文件夹,它有自己的配置文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-08
      • 2015-11-01
      • 1970-01-01
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      相关资源
      最近更新 更多