vscode插件同步不更新版本,因同步仅传输插件id和启用状态,不包含版本信息;需手动触发更新或点击扩展视图刷新按钮才能安装新版本。

插件更新后跨主机不同步,不是同步功能坏了,而是 VSCode 同步机制根本不处理“插件版本变更”——它只管你装了哪些插件,不管它们是不是最新版。你手动点了更新,另一台设备不会知道,也不会自动拉新版本。
Sync: Upload Settings 不会上传插件版本号
VSCode 同步的 extensions.json 只记录插件 ID 和启用状态("enabled": true),不存版本字段。哪怕你在 A 机把 ms-python.python 升到 v2026.8.1,B 机同步后仍运行旧版(比如 v2026.5.0),除非它自己触发自动更新或你手动点更新。
- 同步内容是“安装清单”,不是“安装包”或“版本快照”
-
extensions.autoUpdate默认为true,但仅对“新安装插件”或“后台轮询触发”生效,不响应远端同步事件 - 如果你禁用了自动更新(
"extensions.autoUpdate": false),那 B 机永远卡在旧版本,连提示都不会有
如何让新版本真正落地到其他主机
必须分两步走:先确保插件列表同步到位,再强制触发安装/更新动作。光靠 Sync: Download Settings 不够。
- 在更新插件的主机上,运行
Sync: Upload Settings(确保Extensions已勾选) - 在目标主机上,运行
Sync: Download Settings→ 等右下角弹出Extensions to install横幅,或扩展视图顶部出现Recommended extensions提示 - **关键一步**:点击横幅上的
Install,或打开扩展面板,点右上角刷新按钮(?)——否则ms-python.python就一直卡在Installing… - 如果插件已存在但旧,可手动右键 →
Update,或执行Extensions: Check for Extension Updates
Merge 模式下插件版本更易混乱
首次同步选了 Merge,本地已有插件会被保留,但云端新版本信息不会覆盖本地旧版本缓存。结果就是:插件列表对了,版本却没升。
-
Merge只合并“启用/禁用状态”和“插件 ID 列表”,不比较、不拉取、不覆盖已安装插件的文件 - 若你希望所有主机版本严格一致,建议在关键开发机完成更新后,直接用
Replace模式重同步(需提前备份extensions.json) - 或者改用脚本批量更新:
code --install-extension ms-python.python --force,再上传设置
被静默跳过的插件会让同步看起来“成功”实则失效
某些插件根本不会进 extensions.json,也就不会参与同步——比如平台限定插件(ms-vscode.powershell 在 macOS 上不写入)、或被 sync.ignoredExtensions 显式排除的项。
- 检查
settings.json是否含"sync.ignoredExtensions": ["..."],该配置优先级高于同步开关 - 运行
Settings Sync: Show Synced Data,确认Extensions项右侧是否显示 ✅,且数量与你预期一致 - 登录 GitHub Gist(
gist.github.com),手动查看extensions.json内容,确认目标插件 ID 是否真实存在
最常被忽略的一点:同步不等于部署。VSCode 把“列表同步”和“二进制安装”拆成两个独立阶段,而后者完全不自动触发——你得亲手点那个刷新按钮,或者接受它悄悄躺在后台等下次重启才生效。











