【问题标题】:How to build C#, C++ , C Solutions using MsBuild and VS2017 compiler via Batch File?如何通过批处理文件使用 MsBuild 和 VS2017 编译器构建 C#、C++、C 解决方案?
【发布时间】:2018-10-29 08:23:22
【问题描述】:

我正在使用 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 的编译器。

我该怎么做?

【问题讨论】:

  • 如果我的想法正确的话,您将需要在安装目录中定位正确的 ms 版本

标签: c# visual-studio compilation msbuild


【解决方案1】:

这里需要两个单独的东西:msbuild,用于驱动构建过程,以及编译器/链接器/...来执行实际的构建阶段。这些实际上是正交的(理论上,不确定它在实践中能走多远): VS2017 附带的 msbuild 可用于使用 VS2013 中的编译器/链接器构建项目,只要为它们设置环境即可。所以你真正需要的是最后一件事:你可能并不关心确切使用的是什么版本的 msbuild,你想要使用正确的 C++/C# 工具集。

执行此操作的规范方法是运行随每个版本的 VS 提供的 .bat 文件,可从开始菜单以“Developer Command Prompt”访问。这还将设置 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%  

【讨论】:

    【解决方案2】:

    这应该可以帮助您到达目的地

    What's new in MSBuild 15

    路径改变

    MSBuild 现在安装在每个 Visual 版本下的文件夹中 工作室。例如,C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild。您还可以使用以下 用于定位 MSBuild 的 PowerShell 模块:vssetup.powershell。

    【讨论】:

      【解决方案3】:

      如何通过批处理文件使用 MsBuild 和 VS2017 编译器构建 C#、C++、C 解决方案?

      根据 Visual Studio 博客MSBuild is now part of Visual Studio!

      从 Visual Studio 2013 开始,2013 版的 MSBuild 将 作为 Visual Studio 的一部分而不是 .NET Framework 提供。这 过渡使我们能够更快地发展 MSBuild。

      我们可以知道 MSBuild 作为 Visual Studio 的一部分而不是 .NET Framework 的一部分。所以,如果你想使用 Visual Studio 2017 编译器,你需要使用 Visual Studio 2017 中的 MSBuild:

      路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe

      另外,你还可以使用VsDevCmd.bat文件来设置构建环境,就像stijn说的,如果你执行那个文件,你不需要指定MSBuild路径,直接执行MSBuild.exe即可。

      查看similar thread 了解一些详细信息。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-13
        • 1970-01-01
        • 1970-01-01
        • 2019-02-19
        • 2011-04-22
        • 2012-12-16
        相关资源
        最近更新 更多