离线安装插件后“已安装”但不生效,主因是vscode在加载阶段静默跳过或崩溃;需检查extension host日志、插件目录完整性、版本匹配、架构一致、依赖齐备及彻底重启。

离线安装插件后“已安装”但不生效,90% 不是插件坏了,而是 VSCode 在加载阶段静默跳过或崩溃——它不报错、不弹窗,只让你对着空白命令面板发呆。
检查插件是否真被加载:看 Extension Host 日志
VSCode 界面显示“已安装”,不代表插件进了加载队列。真正决定它起不起作用的,是 Extension Host 启动时的日志。
- 按
Ctrl+Shift+U打开输出面板 → 下拉选Log (Extension Host) - 搜索插件 ID(如
ms-python.python或johnsoncodehk.volar)→ 看是否有Activating extension开头的行 - 若出现
Failed to activate extension或Cannot find module,说明依赖缺失或路径损坏 - 若完全搜不到该 ID,代表插件压根没进激活流程——大概率是
engines.vscode版本不匹配,或扩展目录写入失败
确认插件目录是否完整解压
VSCode 安装 .vsix 后,必须在 ~/.vscode/extensions/(Linux/macOS)或 %USERPROFILE%\AppData\Roaming\Code\Extensions\(Windows)下生成对应文件夹。没出现,就等于没装上。
- 用
ls -l ~/.vscode/extensions/ | grep your-plugin-id(Linux/macOS)或dir %USERPROFILE%\AppData\Roaming\Code\Extensions\(Windows)确认目录存在 - 进该目录,检查是否有
package.json、out/或dist/子目录;若只有空文件夹或零散.js文件,说明 .vsix 被错误解压重打包过 - 特别注意 Volar、Python 等含 LSP 服务器的插件:
node_modules/@volar/vue-language-server/bin/volar-server或out/server/pyright.bundle.js必须存在且可执行 - 别用 Windows 资源管理器双击打开 .vsix 再拖回保存——ZIP 结构会被破坏,导致静默失败
绕过 Marketplace 校验的关键三步
离线环境里,VSCode 无法连 marketplace.visualstudio.com 做签名和版本哈希校验,所以很多检查逻辑直接跳过。但你可以手动补全关键环节。
- 运行
code --version,取前两位(如1.92.2→1.92);再用unzip -p your-plugin.vsix extension/package.json | grep engines查"vscode": "^1.85.0";本地版本必须 ≥ 插件声明的最低版本 - ARM 架构机器(如 M-series Mac)必须装
arm64构建的 .vsix;Help → About 里括号内容(arm64/x64)必须与插件一致 - 依赖插件必须一并离线安装:比如
ms-python.python强依赖ms-toolsai.jupyter,只装主包会导致 Extension Host 加载失败且无提示
彻底退出 VSCode 再重试
很多人重启只是关窗口,但后台进程(Code Helper、Extension Host)仍在运行,缓存不会清,新插件根本不会被重新扫描。
- macOS:右键 Dock 图标 → 选
Quit Visual Studio Code;别只关窗口 - Windows/Linux:任务栏右键图标 →
Exit;或打开任务管理器杀掉所有Code.exe进程 - 检查
ps aux | grep code(Linux/macOS)或任务管理器中是否还有残留进程 - 启动后立刻打开
Log (Extension Host),观察插件是否出现在首次激活日志流里
最常被忽略的是:插件目录权限和语言服务器二进制缺失。尤其是内网机器挂载了 NTFS 分区、WSL 访问 Windows 文件系统、或 macOS 启用了 SIP 的情况,.vscode/extensions/ 可能不可写,或者 volar-server 没有执行权限——这些都不会报错,只会让插件永远停在“已安装”状态。











