首页 > 解决方案 > 如何为相同的解决方案 C++ 使用不同版本的 MSBuild

问题描述

我有一个包含多个项目的 Visual Studio 解决方案。其中很少有 Visual Studio 2017,很少有 Visual Studio 2013。不同之处在于项目的用例。Visual Studio 可以选择为每个项目选择工具集。现在我需要使用 MSBuild 通过 Jenkins 创建构建。如何在 MSBuild 中为项目设置工具集?

标签: jenkinsvisual-studio-2013msbuildvisual-studio-2017visual-studio-2017-build-tools

解决方案


如何为相同的解决方案 C++ 使用不同版本的 MSBuild

首先,请确保在您的本地代理中安装了VS2013VS2017 。

VS IDE 的平台工具集存储在xxx.vcxproj文件中。它存储为PlatformToolsetxml 节点。

<PlatformToolset>v141</PlatformToolset>

在此处输入图像描述

在此处输入图像描述

v142表示 VS2019,v141表示 VS2017,v140表示 VS2015,v120表示 VS2013

因此,对于您的情况,您只需更改 PlatformToolset。

解决方案

因此,您可以-p:PlatformToolset=xxx在 msbuild 命令行中使用指定特定工具集版本来构建项目。

注意:这不会永久更改 中的值xxx.vcxproj,而是在构建项目时使用此特定值。

1)如果你想构建整个解决方案,如果你想使用整个解决方案中的值(每个项目都使用这个工具集),使用这个:

msbuild xxx.sln -t:build -p:PlatformToolset=xxx

或者,如果您想在 msbuild 命令行中为不同的项目使用不同的工具集:

-- 根据需要直接更改每个文件中的PlatformToolsetxxx.vsxproj,然后构建您的解决方案

-- 使用 msbuild 脚本来组合你的解决方案的所有项目,然后直接构建这个脚本来得到你想要的。查看我的答案并更改为使用<Properties>PlatformToolset=xxx</Properties>.

2)如果要构建项目,可以在命令行中覆盖PlatformToolset来指定它。

msbuild xxx.vcxproj -t:build -p:PlatformToolset=xxx

推荐阅读