不能,code --update-extensions 仅更新已启用且未被占用的插件,跳过禁用、正运行语言服务器或被调试的插件,不触发 post-update 脚本,需手动重载窗口。

code --update-extensions 能批量更新所有插件吗
能,但只更新「已启用」且「本地未被占用」的插件。它不处理禁用状态的扩展,也不跳过正在调试或激活中的插件——如果某个插件(比如 ms-python.python)正运行语言服务器,code --update-extensions 会跳过它并静默失败。
该命令绕过 UI 层,不触发 post-update 脚本(如主题重载、窗口刷新),所以更新后建议手动执行 Developer: Reload Window 或重启 VSCode。
- 必须先确保
code命令已加入系统 PATH:在命令面板运行Shell Command: Install 'code' command in PATH - 执行时无进度提示,成功后无输出;失败时仅返回非零退出码,需配合
--verbose查看日志(如code --update-extensions --verbose) - Windows 用户注意:PowerShell 默认禁止执行脚本,可能报错
code : The term 'code' is not recognized,此时改用 CMD 或先运行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
更新失败常见错误和定位方式
最常卡在「没报错但没更新」——本质是网络请求被拦截或 Marketplace 不可达。VSCode CLI 不走系统代理,也不读取 http_proxy 环境变量。
验证方式:打开开发者工具(Developer: Toggle Developer Tools),切到 Network 标签页,再执行一次 code --update-extensions,观察是否有对 marketplace.visualstudio.com 的请求,状态码是否为 0 或 timeout。
- 国内用户典型表现:请求挂起、无响应、超时;解决方法是在 VSCode 设置中显式配置
http.proxy(如http://127.0.0.1:7890)并设http.proxyStrictSSL为false - 权限问题(Linux/macOS):若插件安装在
/usr/share/code/extensions/这类系统路径,当前用户无写入权,code --update-extensions会失败且不提示具体路径;可用ls -l ~/.vscode/extensions/确认主安装位置 - 离线场景:可先下载
.vsix文件(从 Marketplace 页面点 Download Extension),再用code --install-extension /path/to/ext.vsix安装
如何让命令行更新更可控、可复现
单纯跑 code --update-extensions 缺乏粒度控制。想锁定行为、适配 CI 或多环境部署,推荐组合使用参数与配置项。
- 只更新指定插件:
code --install-extension ms-python.python --force(--force覆盖已存在版本) - 跳过 SSL 验证(内网或自签名证书环境):
code --disable-gpu --no-sandbox --ignore-certificate-errors --update-extensions - 配合 settings.json 控制自动检查节奏:在用户设置里加
"extensions.autoCheckUpdates": false,避免 CLI 更新时被后台轮询干扰 - 企业策略下若
extensions.autoCheckUpdates被组策略禁用,CLI 命令也会失效,此时需联系管理员放开extensions.autoUpdate权限
为什么不能依赖“自动更新”+命令行混合策略
VSCode 的自动更新机制(extensions.autoUpdate)和 CLI 命令不是同一套流程:前者由主进程在空闲约 6 小时后触发 HTTP 请求 + 解压安装,后者直接调用 extension host 的安装逻辑。两者共存时容易出现状态不一致。
例如:自动更新已下载新包但未安装,此时 code --update-extensions 可能认为“已是最新”而跳过;又或者 CLI 强制安装了 v2.x,但自动更新缓存仍指向 v1.x,下次启动可能回滚。
- 最稳做法:关闭自动更新(
"extensions.autoUpdate": false),全量交由命令行或命令面板统一触发 - 特别注意
extensions.autoUpdateExceptions白名单——它只影响自动更新,对 CLI 命令完全无效 - 更新后若发现功能异常(如
Cannot find module 'xxx'),大概率是插件缓存未清理,需手动删掉~/.vscode/extensions/下对应目录再重装


















