我有一个包含多个项目的 Visual Studio 解决方案。其中很少有 Visual Studio 2017,很少有 Visual Studio 2013。不同之处在于项目的用例。Visual Studio 可以选择为每个项目选择工具集。现在我需要使用 MSBuild 通过 Jenkins 创建构建。如何在 MSBuild 中为项目设置工具集?
1 回答
如何为相同的解决方案 C++ 使用不同版本的 MSBuild
首先,请确保在您的本地代理中安装了VS2013和VS2017 。
VS IDE 的平台工具集存储在xxx.vcxproj
文件中。它存储为PlatformToolset
xml 节点。
像<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