首页 > 解决方案 > 如何通过批处理文件使用 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 的编译器。

我怎样才能做到这一点?

标签: c#visual-studiocompilationmsbuild

解决方案


您在这里需要两个单独的东西: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%  

推荐阅读