ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

VS2019离线安装与组件裁剪实战:从引导程序到自动化部署

VS2019离线安装与组件裁剪实战:从引导程序到自动化部署 简介这份资源是面向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:\VS2019Layoutvs_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.NativeDesktopC 桌面、Microsoft.VisualStudio.Workload.ManagedDesktop.NET 桌面、Microsoft.VisualStudio.Workload.NetWebASP.NET 和 Web 开发、Microsoft.VisualStudio.Workload.PythonPython 开发。如果只要某个具体组件而不是整个工作负载把--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除非用68 GC QtNativeDesktop保留 CMake、MSVC v142去掉 .NET 相关810 G.NET Framework 桌面ManagedDesktop去掉 ClickOnce、去掉 SQL Server Express57 GASP.NET CoreNetWeb去掉 Node.js、去掉 Azure 工具79 GPython 数据分析Python去掉 Web 相关、去掉 C 工作负载46 G裁剪的实操方式是在安装器界面里展开工作负载把“可选”里的勾去掉。命令行方式则是只--add具体组件 ID不加--includeRecommended然后手动补几个必需的。比如只要 MSVC 编译器和 Windows SDKvs_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 INSTALLD:\VS2019 set CACHED:\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 补进去脚本本身不用动。希望帮到你。本文还有配套的精品资源点击获取
返回列表