前言:为什么你搜不到 VS 编译工具
习惯用 Scoop 的 Windows 开发者,在编译 node-gyp、Python C 扩展或原生 C++ 项目时,通常需要一套 MSVC 命令行编译环境(即 BuildTools,不包含 Visual Studio 图形界面)。
执行:
scoop search visual
往往只能搜到老旧的 visualc(VC6,现代项目基本无法使用)。
原因在于:Scoop extras 仓库已经移除了 visual-cpp-build-tools 包。BuildTools 本身需要写入系统目录和注册表,这与 Scoop 的便携化设计理念相冲突,因此不再维护。
本文基于 Scoop Extras Issue #1861 的社区方案,仅安装命令行编译环境,并将构建工具交给 Scoop 管理。
一、一键安装脚本
推荐做法:安装精简版 VCTools,剔除 Visual Studio 自带的旧版 CMake,改用 Scoop 提供的 CMake。
Invoke-WebRequest -Uri 'https://aka.ms/vs/17/release/vs_BuildTools.exe' -OutFile "$env:TEMP\vs_BuildTools.exe"
& "$env:TEMP\vs_BuildTools.exe" --passive --wait --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --remove Microsoft.VisualStudio.Component.VC.CMake.Project
如果想保留 Visual Studio 内置的 CMake,删掉末尾的 --remove ... 参数即可:
Invoke-WebRequest -Uri 'https://aka.ms/vs/17/release/vs_BuildTools.exe' -OutFile "$env:TEMP\vs_BuildTools.exe"
& "$env:TEMP\vs_BuildTools.exe" --passive --wait --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended
参数简述
--passive:静默安装,无需人工点击--wait:阻塞终端,等待安装完成后再返回Microsoft.VisualStudio.Workload.VCTools:最小 MSVC 编译套件,包含cl.exe、link、Windows SDK,不含 Visual Studio 编辑器 GUI--includeRecommended:安装必需的推荐组件,不能省略--remove Microsoft.VisualStudio.Component.VC.CMake.Project:移除 Visual Studio 自带 CMake,由 Scoop 安装更新版本
重要:
vs_BuildTools.exe是 32 位引导器,在 64 位 Windows 上默认会安装到C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools。 👉 如果你想安装到C:\Program Files,需要使用 64 位版本的 VS 引导器。本文不做额外处理,直接适配默认路径。
二、配套 Scoop 工具链
按照 issue 作者的思路,将 cmake/ninja 交给 Scoop 维护:
scoop install cmake ninja
三、注册 vsdev 函数,一键加载 MSVC 环境
Add-Content $PROFILE @'
function vsdev {
$shell = Get-ChildItem "C:\Program Files","C:\Program Files (x86)" -Recurse -Filter "Launch-VsDevShell.ps1" -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty FullName
if (-not $shell) { Write-Error "未找到 BuildTools,请确认安装成功"; return }
& $shell -SkipAutomaticLocation
}
'@
新开终端后,直接执行:
vsdev
cl.exe
如果输出版本号,即代表环境已就绪。

如果需要 64 位环境,可改用:
Add-Content $PROFILE @'
function vsdev {
$shell = Get-ChildItem "C:\Program Files","C:\Program Files (x86)" -Recurse -Filter "Launch-VsDevShell.ps1" -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty FullName
if (-not $shell) { Write-Error "未找到 BuildTools,请确认安装成功"; return }
& $shell -SkipAutomaticLocation -Arch amd64
}
'@

四、卸载命令
& "C:\Program Files\Microsoft Visual Studio\Installer\setup.exe" uninstall --passive --wait --productId Microsoft.VisualStudio.Product.BuildTools
补充:本地 Scoop manifest(可选自用)
保存为 vs-buildtools.json,然后执行 scoop install .\vs-buildtools.json:
{
"version": "17.10",
"description": "VS2022 BuildTools VCTools (From Scoop Extras #1861)",
"homepage": "https://visualstudio.microsoft.com/downloads/",
"license": "Proprietary",
"url": "https://aka.ms/vs/17/release/vs_BuildTools.exe",
"hash": "skip",
"pre_install": "Start-Process \"$dir\\vs_BuildTools.exe\" -ArgumentList '--passive','--wait','--add','Microsoft.VisualStudio.Workload.VCTools','--includeRecommended','--remove','Microsoft.VisualStudio.Component.VC.CMake.Project' -Wait -NoNewWindow",
"uninstaller": {
"script": "Start-Process \"$dir\\vs_BuildTools.exe\" -ArgumentList '--uninstall','--passive','--norestart' -Wait -NoNewWindow"
},
"bin": [
{
"name": "vsdev.ps1",
"script": "$shell = Get-ChildItem \"C:\\Program Files\",\"C:\\Program Files (x86)\" -Recurse -Filter \"Launch-VsDevShell.ps1\" -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty FullName; if(-not $shell){Write-Error '找不到Launch-VsDevShell.ps1';return}; & $shell -SkipAutomaticLocation"
}
]
}
总结
- Scoop extras 不再维护 BuildTools 包,因为 BuildTools 本身不满足 Scoop 的便携原则;
- Issue #1861 方案:使用 32 位引导器静默部署精简版 VCTools,默认安装到
Program Files (x86); - CMake/Ninja 交给 Scoop 管理,
vsdev自动探测路径,无需手动维护硬编码地址; - 只安装命令行编译环境,不含 Visual Studio GUI,足以满足 node-gyp、C/C++ 原生编译需求。
原文 https://blog.csdn.net/2301_79518550/article/details/166736482