VS Code 1.85+ 版本起插件市场隐藏旧版安装选项,需在 URL 添加 ?vscodeVersion=1.79.2(匹配本地版本)才显示“Install Another Version…”菜单;离线安装 .vsix 须解压修改 package.json 中 engines.vscode 为兼容范围,重打包后通过命令安装,并禁用自动更新以防被覆盖。

VS Code 插件市场自 1.85+ 版本起彻底移除了历史版本的前端展示逻辑,Install Another Version… 下拉菜单在多数插件页已不可见——这不是你网络或缓存问题,是 Marketplace 服务端主动过滤了 engines.vscode 声明低于当前版本的插件。想装旧版,必须绕过这层服务端限制。
怎么强制 Marketplace 显示旧版插件列表
Marketplace 页面本身支持 URL 参数驱动兼容性匹配,但需精确匹配本地 VS Code 版本号,否则菜单仍灰显。
- 打开插件市场页,例如
https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode - 在 URL 末尾追加
?vscodeVersion=1.79.2(把1.79.2换成你本地运行code --version输出的**完整版本号**,含三位小数) - 刷新页面,右下角出现
Install Another Version…下拉菜单后,只选带绿色勾号 ✅ 的条目;若全灰,说明作者已从 Release 中撤下所有兼容该版本的.vsix
用 .vsix 离线安装时为什么提示 “Extension is not compatible”
因为 .vsix 文件内嵌的 extension/package.json 中 engines.vscode 字段写死了一个高版本范围(如 "^1.102.0"),VS Code 安装器会在解压前校验并直接拒绝——不是路径或权限问题,是校验失败。
- 用
unzip(Linux/macOS)或 7-Zip(Windows)解压.vsix文件 - 编辑根目录下
extension/package.json,将"engines": {"vscode": "^1.102.0"}改为宽松范围,例如"vscode": ">=1.75.0"或精确锁定"vscode": "=1.79.2" - 保存后重新打包为 zip,再将后缀名改回
.vsix - 执行
Extensions: Install from VSIX命令安装,**不要双击打开**,否则会走系统默认关联,可能跳过校验但不生效
装完重启后插件仍被禁用?重点查 engines.vscode 和自动更新
装完只是第一步,VS Code 启动时还会二次校验 engines.vscode 并静默禁用不匹配插件,而自动更新会在几小时内覆盖你的手动操作。
- 进插件详情页确认右下角版本号是否匹配;更关键的是打开插件目录(如
~/.vscode/extensions/esbenp.prettier-vscode-9.10.3/package.json),检查engines.vscode字段是否为你修改后的值 - 立即关闭自动更新:设置中搜索
extensions.autoUpdate,设为false;同时确认插件详情页右上角 ⋯ 菜单里没勾选Switch to Pre-release Version - Remote-SSH 类插件要额外注意:它前端装对了还不够,远端
~/.vscode-server目录里的二进制必须与本地 VS Code 主版本严格一致,否则卡在Starting VS Code Server——降级后务必先删远端该目录再重连
最常被忽略的是:VS Code 更新后,所有手动修改过的插件目录下 package.json 中的 engines.vscode 会被自动还原为原始值,不是缓存问题,是更新机制本身会重写元数据。每次 VS Code 升级后,这些插件都得重新改一遍字段再重启。


















