c# - 如何通过批处理文件使用 MsBuild 和 VS2017 编译器构建 C#、C++、C 解决方案?
问题描述
我正在使用 MsBuild 在批处理文件中构建我的解决方案,如下所示:
@echo off
set msBuildExe="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe"
set solutionsFile="C:\TestProject\mySln.sln"
rem Build the solutions:
%msBuildExe% /t:Build /p:Configuration=Release /p:Platform=x64 %solutionsFile%
问题是我安装了多个版本的 Visual Studio,我想指向 MsBuild.exe 使用 VS2017 的编译器。
我怎样才能做到这一点?
解决方案
您在这里需要两个单独的东西:msbuild,驱动构建过程,以及编译器/链接器/...来执行实际的构建阶段。这些实际上是正交的(理论上,不确定它在实践中能走多远): VS2017 附带的 msbuild 可用于使用 VS2013 中的编译器/链接器构建项目,只要为它们设置环境即可。因此,您在这里真正需要的是最后一件事:您可能并不关心确切使用了哪个版本的 msbuild,您希望使用正确的 C++/C# 工具集。
执行此操作的规范方法是运行随每个版本的 VS 提供的 .bat 文件,可从开始菜单作为“开发人员命令提示符”访问。这还将设置 msbuild 的路径,因此您无需对其进行硬编码。(注意这些批处理文件也有参数允许选择不同版本的工具集等,但这超出了这个问题的范围)
VS2017 的示例,没有硬编码路径,因此应该可以跨机器和企业/社区/...重复使用:
@echo off
call "%VS150COMNTOOLS\Tools\VsDevCmd.bat"
set solutionsFile="C:\TestProject\mySln.sln"
msbuild /t:Build /p:Configuration=Release /p:Platform=x64 %solutionsFile%
推荐阅读
- c# - 对话打开时的方向问题
- google-analytics - 谷歌数据洞察自定义维度显示不正确的数据
- javascript - 反应状态不适用于登录/注销
- javascript - 使用 Javascript 过滤 Json
- pandas - Pandas 反转累积计数
- pandas - 在数据框中添加两列以形成列表
- firebase - 如何在颤振中只显示没有图像的文本
- javascript - 在页面加载时从模型向 FullCalendar 添加事件
- c++ - C++ 范围转换为 std::string 或在范围内搜索范围?
- odbc - Lotus Notes OLEDB/ODBC 连接失败与 SQL Server 2016