如何自动(从命令行)安装适用于 C++、.NET、C# 等的 Visual Studio 构建工具构建环境

Bas*_*asj 5 c# windows msbuild visual-studio visual-c++

注意:我已经阅读过如何在不安装 IDE 的情况下在构建服务器上安装 VS2017 版本的 msbuild?但这并不能解决完全无 GUI、仅脚本安装的问题。


这些年来,我注意到以下几点:

  • 我从Github下载了一个项目;或者打开我的一个旧项目(比如 4 年前的项目)

  • 跑步msbuild.exe theproject.sln

  • 哎呀,我没有正确的 Visual Studio 版本/.NET Framework 版本/缺少正确的 SDK(这里是许多其他示例情况)

  • 然后花 X 小时浏览https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019等网站,安装一个包,然后注意到它不是正确的(msbuild仍然失败),下载另一个包,安装它等等。

  • 最后你已经下载了 8 GB 的软件包,等待下载,等待安装,等待重新启动,但你仍然不确定它是否有效

  • 您的计算机现在混乱不堪,同时安装了 5 个不同版本的 SDK,这些 SDK 可能会相互冲突(Z 版本是否覆盖/卸载了 Y 版本?)

这可能是避免此问题的解决方案:

如何从命令行安装所需的 MS 构建工具?(我不想使用任何 IDE,我想编写所有内容的脚本)

如果可能的话,我会一次性为build.bat每个项目创建一个文件,如下所示:

msbuildget --package=VC14 --installdir=c:\buildtools\vc14     # automatically download and install
C:\buildtools\vc14\bin\msbuild.exe myproject.sln
Run Code Online (Sandbox Code Playgroud)

或者

msbuildget --package=.NET-35 --installdir=c:\buildtools\net35   
C:\buildtools\net35\bin\msbuild.exe myproject.sln
Run Code Online (Sandbox Code Playgroud)

这个怎么做?

通过这种方法,即使你打开一个6年的项目,你也应该能够构建它。

Mad*_*Mad 8

我刚刚花了很长时间试图解决这个问题。我最终得到了这个:

.\vs_buildtool.exe --passive --wait --add Microsoft.VisualStudio.Workload.VCTools;includeRecommended
Run Code Online (Sandbox Code Playgroud)

请注意使用includeRecommended以避免单独添加组件。includeOptional也可用。您还可以使用eg--includeRecommended标志来包含针对所有工作负载的推荐(请参阅此处)。

或者使用以下命令安装winget

winget install -e --id Microsoft.VisualStudio.2022.BuildTools --override "--passive --wait --add Microsoft.VisualStudio.Workload.VCTools;includeRecommended"
Run Code Online (Sandbox Code Playgroud)

希望这对其他人有用


Mr *_*ian 3

如何(从命令行)自动安装 Visual Studio 构建工具构建环境(适用于 C++ 版本 X、.NET C# 版本 Z 等)

首先,您应该注意,所有工作负载或包都需要安装,并且它们将集成到 Build Tool 中,您需要的是它们的工作负载组件 ID。

您可以参考此文档获取buildtool相关的Component ID。

此外本文档还列出了命令行安装说明。并且顺序与构建工具相同。

建议

您可以尝试以下脚本:

// This is for desktop development and also add the net framwork 3.5
vs_buildtool_xxx.exe --add Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools^ 
                     --add Microsoft.Net.Component.3.5.DeveloperTools^ 
                     --add Microsoft.Net.Component.4.5.2.TargetingPack^
                     --installPath C:\BuildTools

C:\BuildTools\MSBuild\Current\Bin\MSBuild.exe myproject.sln
Run Code Online (Sandbox Code Playgroud)

-add您可以通过带有相关组件 ID 的命令添加更多工作负载或包。

如果你想构建c++项目,你可以尝试下面的例子:

vs_buildtool_xxx.exe --add Microsoft.VisualStudio.Workload.VCTools^ 
                     --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64^ 
                     --add Microsoft.VisualStudio.Component.VC.140^
                     --installPath C:\BuildTools

C:\BuildTools\MSBuild\Current\Bin\MSBuild.exe myproject.sln
Run Code Online (Sandbox Code Playgroud)

Microsoft.VisualStudio.Component.VC.140意思是VS2015的C++构建工具。


重要提示:使用命令行与 vs_installer UI 有很大不同。当你点击vs_installer UI中的c++构建工具时,你可以看到它会自动安装相关组件。

在此输入图像描述

这些组件列在Microsoft.VisualStudio.Workload.VCTools 工作负载下,您可以选择是否安装它们。

但是,并不指定工作负载将安装所有这些。

当您使用命令行时,它不会自动安装任何相关组件,因此您需要手动一一添加

对于 C++ 项目,您可以使用以下命令来安装它:

vs_buildtool.exe --add Microsoft.VisualStudio.Workload.MSBuildTools^ 
                 --add Microsoft.VisualStudio.Workload.VCTools^ 
                 --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64^ 
                 --add Microsoft.VisualStudio.Component.Windows10SDK.18362^ 
                 --add Microsoft.VisualStudio.Component.VC.CMake.Project^ 
                 --add Microsoft.VisualStudio.Component.TestTools.BuildTools^ 
                 --add Microsoft.VisualStudio.Component.VC.ASAN^ 
                 --add Microsoft.VisualStudio.Component.VC.140
Run Code Online (Sandbox Code Playgroud)