jenkins - 如何为相同的解决方案 C++ 使用不同版本的 MSBuild
问题描述
我有一个包含多个项目的 Visual Studio 解决方案。其中很少有 Visual Studio 2017,很少有 Visual Studio 2013。不同之处在于项目的用例。Visual Studio 可以选择为每个项目选择工具集。现在我需要使用 MSBuild 通过 Jenkins 创建构建。如何在 MSBuild 中为项目设置工具集?
解决方案
如何为相同的解决方案 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
推荐阅读
- oracle - Oracle REGEXP_LIKE 忽略 CASE SENSITIVITY
- active-directory - AD 到 Keycloak - 如何生成 uuid(v4) 作为用户名而不是 objectGUID?
- r - 无法编译 Rmd 文件并出现“找不到对象‘输出’”错误
- sql-server - SQL Server 中的函数需要在 Power BI 中具有可选参数
- python - 使用 Google Sheets 或 Python 对有向图(或矩阵)进行聚类
- c - 一个函数能知道是什么调用它吗?
- javascript - 那些是什么 (); 在javascript代码的末尾?
- spock - Spock中如何使用jmockit来测试静态方法返回多个不同的值?
- java - 在AndroidStudio中使用AsyncTask Json将新项目添加到recyclerview时如何发出声音通知?
- laravel - Laravel 属于ToMany 获得一条记录