【发布时间】: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