我有一个TFSBuild 2013服务器,我们现在正试图用它来构建UWP项目,但是我们似乎不能让它使用正确的MSBuild版本。
症状:
在构建UWP项目时,我们会得到许多错误,例如: C:\Program (x86)\MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets (283):在“$(TargetPlatformVersion)‘>= '10.0.11000.0'”条件下,尝试对"10.0.11000.0“进行数值比较,计算结果为"10.0.11000.0”,而不是一个数字。
许多关于此错误的报告都告诉您要确保TFS构建使用的是正确的MSBuild版本。问题就在这里。我们似乎不能让构建服务器使用正确的版本。
下面是我们尝试过的(构建定义使用TfvcTemplate.12.xaml模板):
无论我们更改了什么,我们都无法让Build使用14.0版本的MSBuild。
奇怪的是,nuget在执行包还原时似乎找到了正确的版本。在日志中,我们在运行nuget.exe还原命令: MSBuild自动检测:使用msbuild '14.0‘从'C:\Program (x86)\MSBuild\14.0\bin’中看到这一点。
但是在日志中,所有的错误都是从这里开始的(注意:错误的工具版本):C:\Program (x86)\MSBuild\12.0\bin\MSBuild.exe /nologo /noconsolelogger“C:\Builds.”狙击
感激地收到任何帮助或建议-我已经束手无策:)
发布于 2016-09-22 01:45:11
最后,我放弃了通过配置使其正常运行的尝试,但通过对注册表进行黑客攻击,成功地使其在构建机器上正常工作。
我更改了以下注册表项:
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版本获得了我们的构建,并且在范围上仅限于构建服务器。
发布于 2021-02-16 01:06:31
编辑TfvcTemplate.12.xaml模板并设置"Run MSBuild“步骤将"ToolsVersion”设置为"14.0“。
如果您还在MSBuild 12.0配置文件中添加以下部分(如描述的这里),这将有效。
<msbuildToolsets>
<toolset toolsVersion="14.0">
<property name="MSBuildToolsPath" value="C:\Program Files (x86)\MSBuild\14.0\Bin\" />
</toolset>
</msbuildToolsets>请注意,MSbuild目录中也有amd64文件夹,它有自己的配置文件
https://stackoverflow.com/questions/39607222
复制相似问题