是否可以在解决方案中使用不同的Platform Toolset项目? (MSBuild的)

时间:2015-11-06 22:14:16

标签: c++ tfs build msbuild visual-studio-2015

我有一个需要使用TFS构建的解决方案。 C#项目和一些C ++项目升级到.Net Framework 4.6和Platform Toolset v140。但是一些第三方C ++项目无法升级(它们在V110中)。 MSBuild无法为项目使用适当的工具集版本。它返回此错误:

C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.Cpp.Platform.targets(44):v140的构建工具(Platform Toolset = 'v140')无法找到。要使用v140构建工具进行构建,请单击“项目”菜单或右键单击解决方案,然后选择“更新VC ++项目...”。使用v140构建工具安装v140进行构建。

有什么方法可以让它发挥作用吗? MSBuild可以构建一个具有不同平台工具集项目的解决方案吗?

谢谢你, Arash的

2 个答案:

答案 0 :(得分:0)

我的同事Phil解决了这个问题。基本上,您所要做的就是将MSBuild ToolPath属性更改为指向正确的MSBuild版本。由于每个版本的MSBuild都支持早期版本,因此您应该指向最高版本的MSBuild。

在Visual Studio中打开构建过程模板,然后导航到Microsoft.TeamFoundation.Build.Workflow.Activities.MSBuild。要到达那里,您应该转到以下路径:

尝试编译,测试和关联...... - >序列 - >编译,测试和关联... - >尝试编译和测试 - >编译和测试 - >对于...中的每个配置 - >编译和测试...... - >如果BuildSettings.HasProjectsToBuild - >对于BuildSettings中的每个项目... - >编译项目和副本 - >尝试编译项目 - >编译项目

现在右键单击“为项目运行MSBuils”并选择属性。这里有一个属性“ToolPath”,您可以指定MSBuild地址(在我的例子中是“C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin”)。

这应解决问题。

干杯,

Arash的

答案 1 :(得分:-1)

您无需在项目的MSBuild参数中指定平台工具集。

我尝试过我当地的环境。包括三个项目的解决方案 C#(Platform Toolset v140),C ++(Platform Toolset v140),C ++(Platform Toolset v120)。没有在MSBuild Arguments中指定Platform Toolset。建立成功。