简介:这份资源是面向C/C++初学者与刚接触Visual Studio的开发者整理的VS2019安装与配置指南,以PDF形式呈现,重点解决从下载安装到编写、调试代码过程中常见的报错与设置问题。资源包共1个PDF文件,大小约1.2MB,内容图文并茂,便于按步骤对照操作。目前已有4387人学习下载,说明其在入门群体中具有较高的参考价值。资料围绕安装流程、语言包与安装位置选择、创建首个项目、编写代码、字符集与SDL检查调整、取消不安全函数报错等知识点展开,并提醒VS2019不支持C++万能头文件、卸载需彻底等易踩坑细节。读者可借此快速完成环境搭建,掌握常见报错的排查与处理思路,减少在配置环节反复试错的时间,适合作为VS2019入门阶段的实操参考。
1. VS2019 安装这件事,为什么离线包和组件选择比点“下一步”重要得多
很多人第一次装 Visual Studio 2019,都是官网下载一个几 MB 的引导程序,双击,勾选“使用 C++ 的桌面开发”,然后一路下一步。装完发现 C 盘少了 20 个 G,想装 Python 工作负载又得重新跑一遍安装器,换台没网的机器更是直接卡在下载环节。VS2019 的安装器本质上是一个“按需拉取”的包管理器,它默认只下你勾选的那部分,而且缓存散落在系统盘里。真正省事的做法是提前规划:用离线安装包把常用工作负载一次性拉全,再用命令行参数控制安装路径和缓存位置。这篇内容面向需要在多台机器、内网环境或虚拟机里反复部署 VS2019 的开发者,也适合第一次装、不想反复重装的人。下面从引导程序与离线包的区别讲起,一路落到组件裁剪、缓存迁移和几个高频翻车点。
2. 引导程序、离线布局与工作负载:先把安装源这件事定下来
2.1 引导程序 vs 离线布局,到底该选哪个
VS2019 官方提供两种获取方式。第一种是引导程序,文件名类似vs_community.exe,体积只有几 MB,运行时从微软服务器实时下载组件。第二种是离线布局,用引导程序加--layout参数把指定工作负载的全部包拉到本地目录,之后断网也能装。两者的核心差异在于“包在哪里”和“装的时候要不要网”。
引导程序适合网络稳定、只装一台机器、且清楚自己需要哪些组件的场景。它的优点是初始下载小、组件按需拉取;缺点是每次装新工作负载都要重新联网,而且下载缓存默认堆在C:\ProgramData\Microsoft\VisualStudio\Packages,时间一长能吃掉十几 G。
离线布局适合内网机器、虚拟机模板、需要批量部署的场景。代价是首次拉取时间长、占用磁盘大,一个带 C++ 桌面开发和 .NET 桌面开发的完整布局轻松超过 15 G。但换来的是可复制:把整个 layout 目录拷到 U 盘或网络共享,任何一台机器都能离线装。
我一般会这样判断:如果这台机器以后可能还要加工作负载,或者周围还有同事要装,直接做离线布局,一次投入换后面省心。如果只是临时用一下、网络也快,引导程序够了。
2.2 用命令行拉一个可复用的离线安装包
离线布局的核心命令是引导程序加--layout。下面这条命令拉取“使用 C++ 的桌面开发”和“.NET 桌面开发”两个工作负载,界面语言只保留中文,输出到D:\VS2019Layout:
vs_community.exe --layout D:\VS2019Layout ^ --add Microsoft.VisualStudio.Workload.NativeDesktop ^ --add Microsoft.VisualStudio.Workload.ManagedDesktop ^ --lang zh-CN ^ --includeRecommended逻辑说明:--layout指定离线目录,安装器会把所有包按目录结构放进去;--add按工作负载 ID 添加,可以写多个;--lang zh-CN只拉中文语言包,不加这个会默认拉英文,体积翻倍;--includeRecommended表示把该工作负载的推荐组件一并拉下来,不加的话只拉必需组件,后面可能缺东西。
参数怎么改:工作负载 ID 不是随便写的,得用官方的工作负载和组件 ID 列表查。常见的有Microsoft.VisualStudio.Workload.NativeDesktop(C++ 桌面)、Microsoft.VisualStudio.Workload.ManagedDesktop(.NET 桌面)、Microsoft.VisualStudio.Workload.NetWeb(ASP.NET 和 Web 开发)、Microsoft.VisualStudio.Workload.Python(Python 开发)。如果只要某个具体组件而不是整个工作负载,把--add换成组件 ID,比如Microsoft.VisualStudio.Component.VC.Tools.x86.x64。
拉取过程中如果中断,重新执行同一条命令会续传,不会从头再来。拉完后D:\VS2019Layout里会有一个vs_community.exe,这个才是离线安装用的入口,不是最开始下载的那个引导程序。
2.3 安装时把缓存和安装目录挪出系统盘
默认安装路径是C:\Program Files (x86)\Microsoft Visual Studio\2019,共享组件和缓存也在 C 盘。如果系统盘是 SSD 且容量紧张,装之前就要改路径。用离线目录里的安装器执行:
D:\VS2019Layout\vs_community.exe --noweb ^ --installPath "D:\VS2019" ^ --add Microsoft.VisualStudio.Workload.NativeDesktop ^ --includeRecommended ^ --nickname "DevBox"逻辑说明:--noweb强制走本地布局,不联网;--installPath指定主安装目录;--nickname给这个实例起个名字,多版本共存时有用。
注意:--installPath只改主程序目录,共享组件(比如 MSBuild、SDK)和包缓存仍然在 C 盘。要彻底迁移缓存,得在安装前设置环境变量,或者装完后用安装器的“移动缓存”功能。缓存目录默认在C:\ProgramData\Microsoft\VisualStudio\Packages,可以在安装器里通过--cache参数指定到别的盘:
D:\VS2019Layout\vs_community.exe --noweb ^ --installPath "D:\VS2019" ^ --cache "D:\VSCache" ^ --add Microsoft.VisualStudio.Workload.NativeDesktop这样包缓存落在 D 盘,以后加组件、修复安装都从本地缓存走,不用重新下载。
3. 组件裁剪与安装后配置:让 VS2019 只装你真正要用的东西
3.1 按开发方向勾组件,别整包全选
VS2019 的工作负载粒度比较粗,一个“使用 C++ 的桌面开发”就包含编译器、CMake、Windows SDK、调试工具等一大堆。如果全选,装完 30 G 起步。实际项目里往往只需要其中几项。下面按常见方向给一个裁剪参考:
| 开发方向 | 必选工作负载 | 可去掉的推荐项 | 大致体积 |
|---|---|---|---|
| 纯 C++ 控制台/算法 | NativeDesktop | 去掉 C++/CLI、去掉 ATL/MFC(除非用) | 6~8 G |
| C++ + Qt | NativeDesktop | 保留 CMake、MSVC v142,去掉 .NET 相关 | 8~10 G |
| .NET Framework 桌面 | ManagedDesktop | 去掉 ClickOnce、去掉 SQL Server Express | 5~7 G |
| ASP.NET Core | NetWeb | 去掉 Node.js、去掉 Azure 工具 | 7~9 G |
| Python 数据分析 | Python | 去掉 Web 相关、去掉 C++ 工作负载 | 4~6 G |
裁剪的实操方式是在安装器界面里展开工作负载,把“可选”里的勾去掉。命令行方式则是只--add具体组件 ID,不加--includeRecommended,然后手动补几个必需的。比如只要 MSVC 编译器和 Windows SDK:
vs_community.exe --noweb ^ --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ^ --add Microsoft.VisualStudio.Component.Windows10SDK.19041 ^ --add Microsoft.VisualStudio.Component.VC.CMake.Project这样装出来只有编译和 CMake 支持,体积能压到 4 G 以内。代价是后面想用调试器的高级功能或某个库时,可能得回来补组件。
3.2 安装后必做的三项配置
装完不是就完了,有三件事不做后面会难受。
第一,把“工具 → 选项 → 项目和解决方案”里的“生成并运行时,仅显示输出窗口”关掉,改成显示“生成”窗口。默认只显示输出窗口,编译错误得手动切到错误列表,效率低。
第二,设置符号服务器和源码缓存。在“工具 → 选项 → 调试 → 符号”里勾选 Microsoft 符号服务器,缓存目录设到非系统盘。这样调试进系统库时能自动下 PDB,排查崩溃栈有用。缓存目录默认在%LOCALAPPDATA%\Temp\SymbolCache,建议改到D:\SymbolCache。
第三,如果做 C++,把“工具 → 选项 → 调试 → 常规”里的“启用‘仅我的代码’”关掉。开着的话,调试时系统库和第三方库的栈会被折叠,看崩溃现场很别扭。关掉后调用栈完整,配合符号服务器能直接看到出问题的系统调用。
3.3 用命令行验证安装结果
装完后想确认组件是否齐全,可以用vswhere查。这个工具在C:\Program Files (x86)\Microsoft Visual Studio\Installer下:
"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" ^ -version 16.0 ^ -products * ^ -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ^ -property installationPath逻辑说明:-version 16.0对应 VS2019;-requires指定必须包含的组件 ID;-property installationPath只输出安装路径。如果返回空,说明该组件没装。这个命令在写自动化脚本、检查构建环境时很有用,比翻安装器界面快。
参数怎么改:-requires可以写多个,用空格分隔,表示“同时包含”;-property还可以换成displayName、installationVersion等。如果只想列出所有 VS 实例,去掉-requires即可。
4. 避坑与排查:VS2019 安装里最容易翻车的五件事
4.1 安装卡在“正在准备安装”或进度条不动
现象:引导程序启动后卡在准备阶段,或者下载进度长时间为 0。
原因:多数是网络到微软 CDN 的连接不稳定,或者系统代理设置干扰了安装器的下载。安装器走的是 HTTPS,但会读取系统代理配置。
解决:先确认系统代理是否正常,必要时在安装器命令行加--nocache强制不走缓存重试。如果是离线布局,确认--layout目录完整,用--noweb强制本地。还可以看安装日志,位置在%TEMP%\dd_*.log,里面会记录具体卡在哪个包的下载上。
4.2 装完 C++ 工作负载但找不到 cl.exe
现象:命令行里敲cl提示不是内部或外部命令,或者 CMake 配置时报找不到编译器。
原因:VS2019 的 C++ 编译器不在系统 PATH 里,必须通过“Developer Command Prompt”或vcvarsall.bat初始化环境。直接开 cmd 是找不到的。
解决:用开始菜单里的“Developer Command Prompt for VS 2019”,或者手动调用:
call "D:\VS2019\VC\Auxiliary\Build\vcvars64.bat" clvcvars64.bat会设置PATH、INCLUDE、LIB等环境变量。如果这个文件不存在,说明 C++ 工作负载没装全,回去补Microsoft.VisualStudio.Component.VC.Tools.x86.x64。
4.3 离线安装时提示“找不到包”或“包损坏”
现象:用离线布局安装,中途报某个包缺失或哈希校验失败。
原因:拉取布局时网络中断导致包不完整,或者拷贝过程中文件损坏。离线布局的包是按需下载的,中断后虽然能续传,但偶尔会留下不完整的临时文件。
解决:在布局目录下重新执行拉取命令,加--fix参数让安装器校验并补全缺失的包。如果还不行,删掉布局目录里对应工作负载的子目录重新拉。校验完整性可以用安装器的--verify参数。
4.4 安装路径改了但共享组件还在 C 盘
现象:--installPath设到了 D 盘,装完发现 C 盘还是少了很多空间。
原因:--installPath只管主程序目录,共享组件(MSBuild、SDK、模拟器等)和包缓存默认仍在 C 盘。这是 VS2019 安装器的设计,不是 bug。
解决:安装前用--cache把包缓存指到别的盘;共享组件目录可以在安装器界面里改,命令行下用--sharedInstallPath(部分版本支持)。如果已经装完,用安装器的“修改”功能移动缓存,共享组件不建议手动移,容易导致修复安装失败。
4.5 多版本共存时 vswhere 找不到目标实例
现象:机器上同时有 VS2017 和 VS2019,脚本里用 vswhere 查到的路径不对。
原因:vswhere 默认返回所有实例,不指定版本范围时会按安装顺序返回,可能拿到旧版本。
解决:查询时加-version [16.0,17.0)限定 VS2019 的范围,或者用-latest取最新。更稳妥的做法是用-requires指定只有目标版本才有的组件 ID,这样即使版本号记错也能过滤对。
vswhere -version "[16.0,17.0)" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath5. 把 VS2019 装进自动化流程:一个可复用的部署脚本思路
如果经常要给新机器或虚拟机装环境,手动点安装器太慢。我的习惯是写一个批处理,把离线布局、组件选择、缓存路径、验证四步串起来。核心思路是:布局目录放网络共享,脚本从共享拉取并安装,最后用 vswhere 验证关键组件。
@echo off set LAYOUT=\\nas\tools\VS2019Layout set INSTALL=D:\VS2019 set CACHE=D:\VSCache if not exist "%INSTALL%" ( "%LAYOUT%\vs_community.exe" --noweb ^ --installPath "%INSTALL%" ^ --cache "%CACHE%" ^ --add Microsoft.VisualStudio.Workload.NativeDesktop ^ --add Microsoft.VisualStudio.Workload.ManagedDesktop ^ --includeRecommended ^ --quiet --norestart ) "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" ^ -version "[16.0,17.0)" ^ -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ^ -property installationPath > "%TEMP%\vs_path.txt" if %errorlevel% neq 0 ( echo VS2019 安装验证失败,检查日志 exit /b 1 ) echo VS2019 就绪逻辑说明:--quiet让安装无界面,--norestart禁止自动重启,适合脚本里跑。--includeRecommended保证常用组件齐全。验证步骤用 vswhere 的返回码判断,非零就报错退出。
参数怎么改:如果只要 C++,去掉 ManagedDesktop 那行;如果要加 Python,补--add Microsoft.VisualStudio.Workload.Python。--quiet模式下安装日志在%TEMP%下,出问题先看日志。
一个容易忽略的点:--quiet安装时如果目标目录已存在旧版本,安装器可能直接跳过而不是升级。脚本里最好先判断%INSTALL%是否存在,存在就走“修改”而不是“安装”。另外,网络共享路径用 UNC 时,安装器对权限比较敏感,确保运行脚本的账户对共享有读权限。
这套流程跑通后,新机器从零到能编译 C++ 大概 15 分钟,比手动点快,而且每次装的组件一致,不会出现“这台有 MFC 那台没有”的玄学问题。我自己的习惯是每季度更新一次布局目录,把新的 Windows SDK 补进去,脚本本身不用动。希望帮到你。
本文还有配套的精品资源,点击获取