真正禁用vscode插件自动更新须同步关闭三个开关:“extensions.autoupdate”: false、“extensions.autocheckupdates”: false、“workbench.enableexperiments”: false,缺一不可;否则仍会后台探测、弹窗或预加载。

为什么关了 extensions.autoUpdate 还会更新?
因为 VSCode 的插件更新机制有三层开关,只关最上层的 extensions.autoUpdate 不够。它只控制「是否自动拉取新包」,但不阻止以下行为:
— extensions.autoCheckUpdates 仍在后台发起请求,触发插件市场响应;
— 某些插件(如 GitLens、ESLint)自带独立检查逻辑,绕过 VSCode 通用设置;
— 项目级 .vscode/settings.json 若含 "extensions.autoUpdate": true,会覆盖全局配置;
— 插件市场页面有时会“静默预加载”新版,重启后直接激活。
真正禁用插件自动更新要改哪几个配置?
必须同步关闭三个关键项,缺一不可:
— "extensions.autoUpdate": false:停掉下载与安装
— "extensions.autoCheckUpdates": false:停掉后台版本探测请求
— "workbench.enableExperiments": false:禁用新版通知框架(否则 GitLens 等仍弹「New release available」)
全部写进用户 settings.json 最稳妥,路径可通过 Ctrl+Shift+P → Preferences: Open User Settings (JSON) 打开。
注意:Windows 用户需确认没在快捷方式里勾选「以管理员身份运行」,否则部分配置写入可能被拦截。
如何锁定某个插件不升级(比如 Prettier v3.4.1)?
VSCode 本身不支持语义化版本锁定,但可用组合策略实现事实冻结:
— 先禁用全局自动更新(见上一条)
— 在扩展视图(Ctrl+Shift+X)中找到该插件,点击右下角齿轮图标 → Extension Settings → 关闭其 Auto Update 开关
— 若插件提供 updateChannel 或 enableUpdateCheck 类设置(如 esbenp.prettier-vscode 支持 prettier.enableUpdateCheck),设为 false
— 终极保险:卸载当前版本,手动下载对应 .vsix 文件(从 marketplace 页面点「Download Extension」),再用 Extensions: Install from VSIX 安装——VSCode 不会对本地安装的插件发起版本检查
更新后插件报 Extension host terminated unexpectedly 怎么快速回滚?
这不是配置问题,而是新版插件与当前 VSCode 内核或其它插件存在 ABI 不兼容。回滚不能靠「撤销更新」,得手动干预:
— 关闭所有 VSCode 窗口,包括托盘进程
— 进入插件目录:
Windows:%USERPROFILE%\.vscode\extensions\
macOS:$HOME/.vscode/extensions/
Linux:$HOME/.vscode/extensions/
— 找到对应插件文件夹(名含作者和插件名,如 esbenp.prettier-vscode-3.4.1),重命名或剪切走
— 把之前备份的老版本文件夹(如 esbenp.prettier-vscode-2.10.0)移回来
— 启动 VSCode,不要点「更新全部」,先验证功能是否恢复
— 若无备份,去 marketplace 页面下载旧版 .vsix 重新安装即可
workbench.enableExperiments 和 extensions.autoCheckUpdates 这两个开关——它们不显眼,但一旦开着,插件就会持续发请求、收响应、触发 UI 弹窗,哪怕你已把 autoUpdate 设为 false。











