必须用code --list-extensions --show-versions > vscode-extensions.txt导出带版本号的精确插件ID列表(如ms-python.python@2024.6.0),避免手动复制显示名或截图导致ID错误、版本不一致、静默失败;Windows PowerShell需用Out-File -Encoding UTF8确保UTF-8编码。

怎么导出已安装扩展的精确列表
离线环境里重装扩展,靠手动记名字或截图根本不可靠。必须用 code --list-extensions 生成机器可读的清单,否则后期安装时会漏掉依赖插件、版本不一致、甚至因 ID 拼写错误导致静默失败。
- 在终端运行
code --list-extensions --show-versions > vscode-extensions.txt—— 加上--show-versions很关键,能保留ms-python.python-2024.6.0这类带版本号的完整 ID,避免离线安装时拉取到不兼容旧版 - Windows 用户若用 PowerShell,命令为
code --list-extensions --show-versions | Out-File -Encoding UTF8 vscode-extensions.txt,避免默认编码导致中文路径或特殊字符乱码 - 不要用截图、复制扩展面板文字,那些不含 publisher ID(如
ms-python),而 VSCode 离线安装必须依赖完整 ID,否则code --install-extension python会报错Extension 'python' not found
如何批量下载对应 .vsix 文件
有了扩展 ID 列表,下一步是把每个 ID 转成可离线安装的 .vsix 文件。不能靠浏览器人工点下载,效率低且容易漏版本;也不能用第三方爬虫脚本,微软市场接口有反爬和限流。
- 推荐用开源工具
vsce(VS Code Extension Manager):先npm install -g vsce,再逐行执行vsce package --packagePath ./vsix/ --version 2024.6.0 ms-python.python—— 注意参数顺序,--version必须紧接在 ID 前,否则会忽略 - 更稳妥的是用官方市场直链拼接:格式为
https://<publisher>.gallery.vsassets.io/_apis/public/gallery/publisher/<publisher>/extension/<extension-name>/<version>/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage</version></extension-name></publisher></publisher>,例如ms-python.python-2024.6.0对应https://ms-python.gallery.vsassets.io/.../Microsoft.VisualStudio.Services.VSIXPackage - 下载后务必重命名文件为
ms-python.python-2024.6.0.vsix,保持与 ID 完全一致,否则code --install-extension无法识别——它不解析包内 manifest,只认文件名
离线安装时哪些参数和路径容易出错
code --install-extension 看似简单,但实际在不同系统下对路径、空格、权限的处理差异极大,一错就卡在 command not found 或 EPERM。
- Linux/macOS 必须用绝对路径:
code --install-extension /home/user/vsix/ms-python.python-2024.6.0.vsix;相对路径./vsix/...在某些 shell 下会失败 - Windows 路径含空格时,必须加双引号:
code --install-extension "C:\my ext\prettier-3.2.5.vsix",漏引号会导致只读取到C:\my就截断 - 若提示
command not found: code,不是没装 VSCode,而是 CLI 未注册:在已启动的 VSCode 中按Ctrl+Shift+P,输入并执行Shell Command: Install 'code' command in PATH - 已有同名扩展时默认拒绝覆盖,加
--force参数才能静默升级:code --install-extension xxx.vsix --force
语言类插件离线启用后为什么卡在 “Downloading…”
像 ms-python.python、ms-vscode.cpptools 这类语言插件,安装成功 ≠ 功能可用。它们首次启用时会尝试离线下载 LSP server(如 pyright、clangd),没网络就会卡住,状态栏一直显示 “Downloading Python language server…”。
- 必须提前下载对应 LSP 二进制:例如 Python 插件需要
pyright,去其 GitHub Releases 页面下载匹配平台的压缩包(如pyright-1.1.357-linux-x64.tar.gz),解压后放入~/.vscode/extensions/ms-python.python-2024.6.0/node_modules/pyright - 路径必须严格匹配插件期望结构,不能只丢一个可执行文件进去——插件通过
package.json里的contributes.debuggers或activationEvents查找子目录 - 如果跳过这步,唯一补救方式是禁用该插件,改用纯文本编辑,或临时配代理让其完成首次下载


















