VSCode 1.85+ 安装旧插件报不兼容错误,需手动添加 URL 参数 ?vscodeVersion=x.x.x 或离线修改 .vsix 中 package.json 的 engines.vscode 字段;已安装插件可改本地 extension 目录下 package.json 并重载窗口;Remote-SSH 降级后须删除远端 ~/.vscode-server;Vetur 等依赖旧协议插件无法仅靠修改字段解决。

VSCode 1.85+ 安装旧插件报 Extension is not compatible with Code 错误
这不是网络问题,是 Marketplace 默认屏蔽了 engines.vscode 声明低于当前版本的插件。VSCode 1.85 起强制校验该字段,且不显示历史版本列表——除非你手动加 URL 参数。
解决路径只有两条:要么让 Marketplace 主动展示兼容旧版,要么离线改 package.json。
- 打开插件市场页,例如
https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode - 在 URL 末尾追加
?vscodeVersion=1.79.2(值必须和你本地code --version输出完全一致) - 刷新后右下角出现 Install Another Version… 下拉菜单,只选带 ✅ 的版本
- 若整个菜单灰显,说明作者已撤下所有兼容版本,必须走离线修改路径
离线修改 .vsix 中的 engines.vscode 字段
直接双击安装或拖拽 .vsix 文件会失败,因为 VSCode 在加载阶段就校验 engines.vscode。必须先解压、改字段、再重打包。
- 用
unzip(Linux/macOS)或 7-Zip(Windows)解压.vsix文件 - 找到根目录下
extension/package.json,定位"engines": { "vscode": "^1.102.0" }这一行 - 改为宽松范围,例如
"vscode": ">=1.75.0"或精确锁定"vscode": "=1.79.2" - 保存后,用
zip -r prettier-fixed.vsix *重新打包(确保顶层是extension/目录) - 再用
code --install-extension prettier-fixed.vsix安装
已安装插件被禁用后临时放宽兼容性检查
插件已存在但被禁用,且你确认它实际没调用新版 API,可跳过重装,直接改本地元数据。
- 定位插件目录:
~/.vscode/extensions/esbenp.prettier-vscode-9.10.3/(macOS/Linux)或%USERPROFILE%\.vscode\extensions\esbenp.prettier-vscode-9.10.3\(Windows) - 编辑该目录下的
package.json,修改engines.vscode字段值 - 改完不能只点「启用」,必须执行命令面板中的
Developer: Reload Window - 注意:VSCode 更新后该字段会被自动重置为原始值,需重复修改
Remote-SSH 插件降级后远端 server 启动失败
Remote-SSH 不只是前端插件,它会在远端机器部署 vscode-server,这个二进制版本必须和本地 VSCode 主版本严格一致。否则连接卡在 Starting VS Code Server。
- 降级本地 VSCode 后,务必先删掉远端的
~/.vscode-server目录 - 再重连,VSCode 会自动下载匹配版本的 server
- 别试图复用旧 server:即使主版本号相同,commit hash 不匹配也会拒绝启动
- 验证方式:连接成功后,在远端终端执行
ps aux | grep vscode-server,看进程参数里是否含当前本地 commit id
engines.vscode 改成 =1.79.2,在 VSCode 1.85+ 上依然不工作——协议层已移除支持,不是字段能绕过的。这时候只能降级 VSCode 或重构项目。


















