2015-11-06 28 views
1

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

C:\ Program Files文件(x86)的\的MSBuild \ Microsoft.Cpp \ V4.0 \ V110 \ Microsoft.Cpp.Platform.targets(44):该版本的V140工具(平台Toolset ='v140')找不到。要使用v140构建工具构建,请单击“项目”菜单或右键单击解决方案,然后选择“更新VC++项目...”。安装v140以使用v140构建工具构建。

有没有什么办法让这个工作? MSBuild有可能构建一个包含不同平台工具集项目的解决方案?

谢谢 阿拉什

+0

你需要管理的第三方C++项目的源代码? –

+0

我不完全知道你的意思是管理。但我可以告诉你的是,为了继续使用它们,我需要将它们保留在当前平台工具集(V110)中。但其余的项目(C++和C#)都已升级。 – Arash

+0

我在这里有一个类似的问题:只有C++项目的解决方案,其中一个设置为ToolsVersion =“14.0”,使用PlatformToolset> v140,其他所有使用v120的项目。当加载到VS2013(即12.0)时,它只是忽略了v140,并像使用v120一样构建。在使用msbuild的命令行上也是如此。在Visual Studio Online中构建一切(afaik是新的TFS?),尽管我得到了与发布完全相同的错误。为什么? – stijn

回答

-1

你并不需要指定平台工具集的MSBuild参数为您的项目。

我尝试在我的本地enviroment.A解决方案,包括三个项目 C#(平台工具集V140),C++(平台工具集V140),C++(平台工具集V120)。没有在MSBuild的参数指定平台工具集。建立成功。

+0

它在Visual Studio中完全正确,但与TFS无关。我没有在_Build Arguments_中指定工具集版本,只在每个项目的属性中指定! – Arash

0

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

因此,在Visual Studio中打开生成过程模板并导航到Microsoft.TeamFoundation.Build.Workflow.Activities.MSBuild。要到达那里,您应该转到以下路径:

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

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

这应该可以解决问题。

干杯,

阿拉什

相关问题