.vscode/extensions 目录中没有 .vsix 文件,因为 VS Code 安装插件时会下载、校验、解压并丢弃原始 .vsix 包;该目录仅存解压后的代码,无法用于跨环境离线重装。

不能直接从 .vscode/extensions 目录里“提取出所有 .vsix 文件”——这个目录里压根没有 .vsix,只有解压后的插件代码。
为什么 .vscode/extensions 里找不到 .vsix
VS Code 安装插件时会把 .vsix 下载、校验、解压,然后丢弃原始包。你看到的 ms-python.python-2024.10.1 这类文件夹,是解压产物,不含任何 .vsix。想离线保存全量插件,必须回到安装源头:市场下载链接。
- .vsix 是发布包,不是运行时产物;备份它才能保证跨环境可重装
- 直接复制
extensions文件夹只适用于同系统、同 VS Code 小版本的临时迁移,不满足“离线全量保存”需求 - 某些插件(如
ms-vscode.cpptools)含平台相关二进制,同一 .vsix 在 Windows/macOS/Linux 上内容不同,必须按目标平台分别下载
用 code --list-extensions --show-versions 导出带版本的清单
这是重建离线环境的第一步,也是唯一可靠的插件 ID 来源。不带 --show-versions 的输出无法锁定具体版本,恢复时可能装错新版,引发 LSP 崩溃或语法高亮失效。
- 执行:
code --list-extensions --show-versions > extensions.list - 确保
code命令已加入 PATH(macOS/Linux 可在命令面板中运行 “Shell Command: Install 'code' command in PATH”) - Windows 用户建议用 PowerShell 而非 CMD,避免重定向编码问题;保存为 UTF-8,否则中文插件名(如
shd101wyy.markdown-preview-enhanced)会乱码 - 输出格式示例:
ms-python.python@2024.10.1,这是后续构造下载链接的唯一依据
批量构造 marketplace 下载链接并下载 .vsix
VS Code 市场不提供“一键打包下载”,但可通过 URL 规则生成有效下载地址。注意:链接 24 小时内有效,且必须带上 User-Agent 和 Accept 头,否则返回 404 或 HTML 页面。
- 手动替换法(适合少量插件):将 marketplace 页面 URL 中的
items?替换为itemfile/download?,例如https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode→https://marketplace.visualstudio.com/itemfile/download?itemName=esbenp.prettier-vscode - 脚本推荐(稳定可靠):用 Python +
requests调用官方 APIhttps://marketplace.visualstudio.com/_apis/public/gallery/extensionquery,传入publisher.name和@x.y.z版本号,解析响应中的vspackage下载地址 - 切勿用 GitHub 源码链接替代 —— 很多插件未开源,或仓库与 marketplace 发布版不一致(如版本号、打包结构、依赖路径)
- 下载后建议按
publisher.name-x.y.z.vsix重命名,便于人工核对
离线安装时必须加 --force 并处理失败容忍
code --install-extension xxx.vsix 默认行为会在某个插件签名验证失败或网络超时时卡住,尤其在无网环境下,ms-vscode.cpptools 等插件仍会尝试连更新服务器。不加控制会导致批量安装中途停滞。
- Linux/macOS 推荐命令:
cat extensions.list | xargs -L 1 -I {} sh -c 'code --install-extension {} --force --force --wait || echo "fail: {}" >> install.log' - Windows PowerShell 写法:
Get-Content extensions.list | ForEach-Object { code --install-extension $_ --force --wait; if ($LASTEXITCODE -ne 0) { Write-Host "Failed: $_" } } -
--force强制覆盖已存在版本;--wait防止命令快速退出导致后台安装被中断 - 务必检查
install.log,部分插件(如 Remote-SSH、GitHub Copilot)需额外同步.ssh/config或登录态,.vsix 本身不包含这些
真正难的不是下载 .vsix,而是确认哪些插件配置项没进 settings.json 却影响功能——比如 python.defaultInterpreterPath、prettier.prettierPath、eslint.packageManager。这些值不会随 .vsix 自动还原,必须单独记录或从 Global Storage 目录手动提取。


















