vsixget能自动下载最新版vsix但不校验兼容性,需加--verify-vscode-version参数或手动检查package.json中的engines.vscode字段;vsce download支持指定版本适合批量固化环境,浏览器构造url最快但易因publisher/name/版本号错误导致404。

vsixget 能自动下载最新版,但不校验兼容性
vsixget 是目前最省心的 CLI 工具,能绕过 Marketplace 页面直接拉取最新 .vsix,不用手动翻 Version History 或拼 URL。安装后执行 vsixget ms-python.python 就能拿到带版本号的文件(如 ms-python.python-2024.6.0.vsix)。
但它默认不检查 engines.vscode 字段——比如你用 VSCode 1.84,而插件要求 ≥1.85,vsixget 照样下载并返回成功,装上后插件图标灰掉、状态栏无响应。必须额外加 --verify-vscode-version 参数(部分旧版不支持),或自己解压 .vsix 后读 package.json 中的 engines.vscode 值。
- 推荐命令:
vsixget --latest --output ./ext/ ms-python.python - 验证是否兼容:解压后运行
unzip -p ms-python.python-2024.6.0.vsix package.json | grep engines - 注意:GitHub Release 页面的
.vsix可能未同步,vsixget拉的是 Marketplace 官方源,更可信
vsce download 支持指定版本,适合批量固化环境
如果你在内网部署几十台机器,且要求所有节点插件版本完全一致(比如审计或 CI 流水线场景),vsce download 比 vsixget 更可控——它强制要求传入 publisher.name@version 格式,避免“最新版”带来的不确定性。
例如 vsce download ms-python.pylance@2024.7.1 会精确拉取该版本,不会因 Marketplace 后台上架新版本而偏移。但它的坑在于:不处理依赖,也不会提示你这个版本是否已下架;如果 2024.7.1 被微软撤回,命令会卡住或返回空文件,需配合 --verbose 观察 HTTP 状态码。
- 必须提前装好
vsce:npm install -g @vscode/vsce - 路径含空格时,命令会静默失败,务必用英文路径(如
C:/vsix) - 下载后建议立刻校验 SHA256:
shasum -a 256 ms-python.pylance-2024.7.1.vsix,再和 Marketplace 页面的 checksum 对比
浏览器构造 API URL 最快,但版本号容易填错
直接访问 https://marketplace.visualstudio.com/_apis/public/gallery/publishers/{publisher}/vsextensions/{name}/{version}/vspackage 是最快路径,尤其适合脚本化批量下载。但 publisher 和 name 必须严格匹配插件 ID 的两段(如 ms-python.python 中 ms-python 是 publisher,python 是 name),大小写、连字符都不能错。
常见错误是把 GitHub 用户名当 publisher(比如 esbenp.prettier-vscode 的 publisher 是 esbenp,不是 prettierjs),或者从插件页面 URL 里抄错 name(itemName=ms-python.python → name 是 python,不是 ms-python.python)。填错就 404,且错误信息只显示 “Not Found”,没提示哪段错了。
- 安全做法:打开插件页 → 点右上角 “Copy Extension ID” → 得到
ms-python.python→ 拆成两段填入 URL - 版本号务必从 Version History 标签页复制,别信页面右上角显示的“Latest”文字——那只是前端缓存
- 下载后立即重命名,例如
prettier-vscode-9.10.3-20240715.vsix,避免后续混淆
离线安装后语言服务器不启动?不是插件没装好,是 LSP 二进制没落地
很多插件(ms-python.python、volarjs.volar、rust-lang.rust-analyzer)的 .vsix 只包含前端逻辑,真正的语言服务(LSP server)是在首次启用时动态下载的。离线环境下,你会看到状态栏一直卡在 “Downloading pyright…” 或 “Starting Volar Server…”。
这不是网络问题,而是 VSCode 在等一个根本不存在的远程资源。唯一可靠解法:在有网机器上完整触发一次——打开对应类型文件(.py、.vue、.rs),等状态栏出现 “Ready” 后,把整个扩展目录(如 ~/.vscode/extensions/ms-python.python-2024.6.0/)原封不动拷到内网机相同路径下。注意:必须退出 VSCode 所有进程(包括托盘),否则缓存不刷新,新目录被忽略。
- Linux/macOS 路径:
~/.vscode/extensions/ - Windows 路径:
%USERPROFILE%\.vscode\extensions\ - ARM Mac 上还要确认目录里是否有
out/server/darwin-arm64子目录,没有说明下载的是 x64 版,功能会缺失
.vsix 就能完成,最后一层得靠人肉搬运二进制。漏掉这步,插件图标亮着,但实际没任何功能。











