为VisualStudio 2017找到安装的Visual C++工具

对于如何在这个新安装模型的世界中定位这些工具,客户提出了许多问题。 下面的博客文章将分享许多可用于查找VisualStudio2017实例的选项,并提供各种示例来说明实际的过程。

null

如何查找安装的VisualStudio 2017实例和C++工具

您可以通过多种方法查找已安装的VS实例并确定为每个实例安装的工具。

1. vswhere.exe :   A 独立的 可再发行的本机可执行文件,可用于定位已安装的VisualStudio产品实例,以便在生成和部署脚本中使用。 工具 支持发射不同的格式 到目前为止 包括纯文本、JSON和XML。 例如, 这个 下面的vswhere批处理脚本将找到最新安装版本的根路径 它还包含C++桌面工作负载:

for /f "usebackq tokens=1* delims=: " %%i in (`vswhere.exe -latest -requires Microsoft.VisualStudio.Workload.NativeDesktop`) do (if /i "%%i"=="installationPath" set dir=%%j)

%%目录%% 现在包含根安装路径(如果可用)。

2. PowerShell API :这是查找VS安装实例和组件的最简单API,但当然需要PowerShell v3及更高版本。  如果您运行的是PowerShell v3或v4,则还需要安装 动力壳 . 这已经包含在Windows10附带的PowerShellV5中。  以下命令将列出所有已安装的VS2017实例,这些实例还安装了用于x86和x64的v141工具集:

首先安装VSSetup模块:

Install-Module VSSetup -Scope CurrentUser

完成之后,下面的脚本将列出安装了VisualC++编译器的所有安装实例:

Get-VSSetupInstance | Select-VSSetupInstance -Latest -Require Microsoft.VisualStudio.Component.VC.Tools.x86.x64

3. Visual Studio安装程序API :此COM API允许查询已安装的VS实例和 他们的 来自各种编程语言的组件(C++、C语言、VB)。  代码并不像PowerShell脚本那么简单,但是我们在GitHub上有多个关于如何使用API的示例:

GitHub上的示例 ( 没有NuGet依赖关系的示例 )

示例:使用API安装具有VisualC++工具集的实例

对于使用C++中的COM API来列出包含Visual C++工具的安装实例的更具体的例子, 在GitHub上查看此示例 .

它在里面 打印包参考 功能 我的示例检查实例中每个安装组件的名称,以确定是否安装了VisualC++工具集(即,如果安装了“微软.VisualStudio.Cudio.VC.Too.x86.x64”)。

//check if instance has VC toolsif (bstrId == L"Microsoft.VisualStudio.Component.VC.Tools.x86.x64") {vcToolsFound = true;std::wcout << L"Instance " << OLE2T(vcInstance) << " contains the VC++ 2017 compiler tools (x86 and x64 targets).";}

如果构建解决方案,将启动一个简单的命令提示符,该命令提示符可以列出安装的VisualStudio实例、它们的组件以及安装了C++工具的实例。  要在使用该工具的计算机上查找VC++构建工具,请选择中的选项#3,它将指示安装了VC++工具的实例: 1

注:  这个示例不是一个官方工具,它只是为了指导如何利用COM API来定位安装的VisualC++工具。

C++安装工作负载和组件

下面是用于描述每个C++工作负载的基础名称的表,以及安装程序使用的底层组件名称,用于每个工作负载中提供的选项。 这个  Visual C++ 2017 V141编译器工具集组件(x86和x64目标),称为 Microsoft.VisualStudio.Component.VC.Tools.x86.x64 包括在桌面工作负载中作为推荐的(预选)组件,是C++游戏和构建工具工作负载中所需的(总是安装的)组件。

工作量 安装名称
用C++开发桌面 Microsoft.VisualStudio.Workload.NativeDesktop
通用Windows平台开发 Microsoft.VisualStudio.Workload.Universal文件
用C++开发Linux Microsoft.VisualStudio.Workload.NativeCrossPlat
用C++开发游戏 Microsoft.VisualStudio.Workload.NativeName
用C++开发手机 Microsoft.VisualStudio.Workload.NativeMobile

构建工具工作负载

MSBuild工具 Microsoft.VisualStudio.Workload.MSBuildTools
Visual C++构建工具 Microsoft.VisualStudio.Workload.VCTools工具

用C++开发桌面

desktop

友好的名字 组件名称
VC++2017 v141工具集(x86、x64) Microsoft.VisualStudio.Component.VC.Tools.x86.x64
C++剖析工具 Microsoft.VisualStudio.Component.VC.DiagnosticTools工具
Windows 10 SDK(10.0.14393.0) Microsoft.VisualStudio.Component.Windows10SDK.14393
c++的Visual C++工具 Microsoft.VisualStudio.Component.VC.CMake.Project项目
Visual C++ ATL支持 Microsoft.VisualStudio.Component.VC.ATL
Windows 8.1 SDK和UCRT SDK Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Win81
支持C++的Windows XP支持 Microsoft.VisualStudio.ComponentGroup.NativeDesktop.WinXP
MFC和ATL支持(x86和x64) Microsoft.VisualStudio.Component.VC.ATLMFC
C++/CLI支持 Microsoft.VisualStudio.Component.VC.CLI.Support支持
叮当声/C2(实验性) Microsoft.VisualStudio.Component.VC.GC2
标准库模块 Microsoft.VisualStudio.Component.VC.Modules.x86.x64
难以置信的建筑 组件。不可信构建
Windows 10 SDK(10.0.10586.0) Microsoft.VisualStudio.Component.Windows10SDK.10586
Windows 10 SDK(10.0.10240.0) Microsoft.VisualStudio.Component.Windows10SDK.10240
Visual C++ 2015.3 V140工具集(x86,x64) Microsoft.VisualStudio.Component.VC.140

通用Windows平台开发

uwp

* C++通用Windows平台开发工具 需要安装用于C++ UWP开发,但 默认安装。

友好的名字 组件名称
智能跟踪 Microsoft.VisualStudio.Component.IntelliTrace.FrontEnd
用于DirectX的图形调试器和GPU探查器 Microsoft.VisualStudio.Component.Graphics.Tools工具
*C++通用Windows平台开发工具 *Microsoft.VisualStudio.ComponentGroup.UWP.VC
Windows 10 SDK(10.0.10240.0) Microsoft.VisualStudio.Component.Windows10SDK.10240
Windows 10 SDK(10.0.10586.0) Microsoft.VisualStudio.Component.Windows10SDK.10586
体系结构和分析工具 Microsoft.VisualStudio.ComponentGroup.ArchitectureTools.Managed

用C++开发游戏

game

友好的名字 组件名称
C++剖析工具 Microsoft.VisualStudio.Component.VC.DiagnosticTools工具
Windows 10 SDK(10.0.14393.0) Microsoft.VisualStudio.Component.Windows10SDK.14393
Windows 10 SDK(10.0.10586.0) Microsoft.VisualStudio.Component.Windows10SDK.10586
Windows 10 SDK(10.0.10240.0) Microsoft.VisualStudio.Component.Windows10SDK.10240
Windows 8.1 SDK和UCRT SDK Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Win81
难以置信的建筑 组件。不可信构建

用C++开发手机

mobile

友好的名字 组件名称
安卓NDK(RI 3B) 组件.Android.NDK.R13B
Apache Ant(1.9.3) 组件。蚂蚁
Android SDK设置(API级别19和21) 组件.Android.SDK19
Android SDK安装程序(API级别22) 组件.Android.SDK22
Android SDK安装(API级别23) 组件.Android.SDK23
Java SE开发工具包(8.0920.14) 组件.JavaJDK
C++ Android开发工具 组件.MDD.Android
谷歌Android仿真器(API级别23) 组件.Android.Emulator
英特尔硬件加速执行 组件.HAXM
Android NDK(RI 3B)(32位) 组件.Android.NDK.R13Bu 3264
Android NDK(R12B) 组件.Android.NDK.R12B
Android NDK(R12B)(32位) 组件.Android.NDK.R12Bu 3264
Android NDK(R11C) 组件.Android.NDK.R11C
Android NDK(R11C)(32位) 组件.Android.NDK.R11Cu 3264
C++ iOS开发工具 组件.MDD.IOS
难以置信的建筑 组件。不可信构建

Visual C++构建工具

bt

*VisualC++的构建工具 总是 安装VS2017 v141工具集。

友好的名字 组件名称
*VC++2017 v141工具集(x86、x64) Microsoft.VisualStudio.Component.VC.Tools.x86.x64
Windows 10 SDK(10.0.14393.0) Microsoft.VisualStudio.Component.Windows10SDK.14393
c++的Visual C++工具 Microsoft.VisualStudio.Component.VC.CMake.Project项目
Windows 8.1 SDK和UCRT SDK Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Win81
Visual C++ ATL支持 Microsoft.VisualStudio.Component.VC.ATL
MFC和ATL支持(x86和x64) Microsoft.VisualStudio.Component.VC.ATLMFC
C++/CLI支持 Microsoft.VisualStudio.Component.VC.CLI.Support支持
叮当声/C2(实验性) Microsoft.VisualStudio.Component.VC.GC2
标准库模块 Microsoft.VisualStudio.Component.VC.Modules.x86.x64
Windows 10 SDK(10.0.10586.0) Microsoft.VisualStudio.Component.Windows10SDK.10586
Windows 10 SDK(10.0.10240.0) Microsoft.VisualStudio.Component.Windows10SDK.10240

设置命令行环境

Visual Studio 2017中的Developer命令提示符可用于设置中VC++工具集的路径 VCTOOLS安装目录 环境变量。  现在我们发现,已经为安装了VC++编译器工具的每个安装的VS2017实例都有了路径,我们将将此目录引用为 .  这个脚本 以下位置:

Common7Toolsvsdevcmd.bat[-arch=][-hostu arch=]

生成的二进制文件将在其上运行的体系结构(x86[默认],x64,arm)。

<主持人u arch> 为其构建编译器/链接器的体系结构(即,是否希望cl.exe/link.exe本身能够使用32位或64位地址空间)(x86[默认值],x64)。

下面是一个将命令行生成环境设置为使用以x64为目标的host-x64编译器的示例,将使用以下命令:

Common7Toolsvsdevcmd.bat-arch=x64-host_arch=x64

我们现在已经配置了命令行构建环境,以便它能够根据我们的首选项(主机/目标)知道正确的VC++工具在哪里。

识别VC++编译器工具版本

在一个VS实例中可以安装多个版本的VC++工具的情况下,我们引入了 表示该VS安装实例的VC++工具的默认版本。  如果您计划手动组装到VC++工具集目录的路径,我们需要知道已安装工具的默认版本才能获得完整路径。

位于两个文件中的一个,一旦您有了,就可以找到这两个文件。

vcaxiliarybuildmicrosoft.VCToolsVersion.default.[txt | props]

您可以签出位于 Common7Toolsvsdevcmdextvcvars.bat 作为VS Developer命令提示符如何实现这一点的示例。

一次 值为 已识别 ,可以手动构建完整的VC++工具路径,如下所示:

VCToolsMSVCinHost

对于我们为host-x64和target-x64安装的工具,路径如下所示:

vctoolsmssvc14.10.24930inHostX64x64中

闭幕词

由于我们已经删除了VS150COMNTOOLS注册表项,以支持可以在同一台机器上并排安装同一产品的多个VS实例的新世界,因此我们知道许多构建系统和工具过去都依赖于此,而新选项并不是完全相同的替代品。  我们正在与库开发人员和其他依赖于VC++编译器工具的构建人员积极合作,我们愿意接受进一步的反馈,以帮助完善和改进上述解决方案。  请分享您在评论中的任何反馈,或随时将更详细的建议发送给 visualc@microsoft.com .

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享