最稳方式是运行 code --list-extensions 获取启用插件 ID 列表,加 --show-versions 可导出带版本的 ID(如 ms-python.python@2026.4.1)至 UTF-8 编码的 extensions.txt;批量下载需用 vsce download 命令从 Marketplace 拉取标准 .vsix,不可直接复制 .vscode/extensions 文件夹;离线安装须加 --force 和 --allow-unverified 参数,并确保目标环境 Node 版本兼容,装完必须重启 VSCode 并通过 Developer: Show Running Extensions 验证真实运行状态。

怎么拿到已安装插件的准确 ID 列表
直接运行 code --list-extensions 是最稳的方式,它只输出当前启用插件的 ID(如 ms-python.python),不混入禁用项、不依赖 UI 渲染状态。手动从扩展面板复制显示名(比如“Python”)会失败——code --install-extension Python 会报错 Extension 'Python' not found in the marketplace。
加 --show-versions 可带版本号:code --list-extensions --show-versions > extensions.txt,输出形如 ms-python.python@2026.4.1,这对跨环境复现至关重要。
- 确保
code命令在 PATH 中,否则提示command not found - Windows 下用 CMD 重定向时别写成
>>,否则追加混乱 - 保存
extensions.txt用 UTF-8 编码,避免中文插件名乱码
如何批量下载对应 .vsix 文件
单靠 code --list-extensions 只得到 ID,不能直接生成安装包。必须用工具把每个 ID 转成可下载的 .vsix。
推荐用官方 CLI 工具 vsce:先全局安装 npm install -g vsce,再对每个 ID 执行 vsce download ms-python.python@2026.4.1。它会自动解析 publisher、extension name 和最新可用版本,绕过手动拼 URL 的风险。
- 别信插件页面写的 “Recommended”,那是推荐栏,不是依赖树
- GitHub Release 页面的 .vsix 可能滞后或缺失签名,
vsce download从 Marketplace 拉取才保真 - 某些插件(如
ms-vscode.cpptools)含平台原生二进制,vsce download默认拉当前系统架构版;跨平台需加--target参数指定
为什么不能直接复制 .vscode/extensions 文件夹
VSCode 的 .vscode/extensions 目录里存的是解压后的运行时文件,不是标准 .vsix 安装包。它不可移植,原因很实在:
- 不同 VSCode 主版本(如 1.85 vs 1.90)可能不兼容同一份解压内容
- Windows/macOS/Linux 下的 native 二进制模块(如 Pylance 的
.node文件)互不通用 - arm64 和 x64 架构的插件文件夹完全无法混用
- 部分插件启动时还会动态生成缓存或校验路径,直接拷贝常导致静默失效
所以离线部署必须走 .vsix → 安装流程,而不是文件夹搬运。
离线安装时卡住或不生效的硬坑
code --install-extension xxx.vsix 在内网常卡住,不是命令错了,而是 VSCode 默认行为在作祟:它仍会尝试连接 Marketplace 校验签名、检查更新、等待依赖安装完成。
- 加
--force跳过“已存在”提示,避免重复安装阻塞 - 加
--allow-unverified绕过证书链验证(离线环境无法连微软 CA) - 某些插件(如
esbenp.prettier-vscode)依赖 Node.js 运行时版本,目标机器 Node 版本太低会导致安装成功但功能不加载,日志里只显示Installation completed - 装完必须重启 VSCode,再用
Developer: Show Running Extensions查真实运行状态,--list-extensions不反映实际加载结果
真正麻烦的从来不是下载或安装动作本身,而是插件之间隐式依赖没被声明、运行时环境不匹配、以及 VSCode 自身在离线状态下仍固执地尝试联网——这些细节不处理,打包做得再全也白搭。


















