VSCode不支持通过settings.json配置插件自定义源,官方已移除extensionGallery等旧API;所谓“自定义源”实为手动安装.vsix、命令行强制部署或环境变量+符号链接隔离插件目录三种离线方式。

VSCode 本身不支持插件自定义源,别在 settings.json 里找 "extensionGallery" 配置项
VSCode 没有类似 npm 的 registry 机制来切换插件市场源。所谓“自定义源安装”,实际是绕过 Marketplace 的三种手动方式,不是改一个配置就能全局生效。官方明确不提供 extensionGallery 或 extensions.registry 这类设置项——你搜到的任何教程里出现这类字段,基本都是误传或混淆了旧版 API(v1.20 之前已移除)。
常见错误现象包括:在 settings.json 里写了 "extensionGallery": { "serviceUrl": "https://my-mirror.com" } 却完全没效果;或者看到某些企业版 VSCode 文档提到该字段,但社区版根本不识别。
- VSCode 插件分发强依赖
marketplace.visualstudio.com,所有 UI 安装、自动更新、搜索都硬编码指向它 - 即使你用代理把 marketplace 域名映射到内网镜像站,也得确保响应结构完全兼容官方 API(含签名、元数据格式、CDN 路径),否则扩展面板直接空白
- 想验证是否真被拦截?终端执行
curl -I https://marketplace.visualstudio.com/_apis/public/gallery/publisher,返回 200 才算通;403/timeout 就不是源的问题,是连不上
离线环境只能靠 .vsix + code --install-extension,且必须处理依赖链
企业内网或涉密环境禁外联时,“安装自定义源插件”本质是批量部署预下载的 .vsix 文件。但直接双击拖入或点击 Install 按钮几乎必失败——VSCode 会尝试联网校验签名和依赖,哪怕文件已存在。
正确做法是命令行强制安装,并补全依赖:
- 先用
code --install-extension /path/to/plugin.vsix安装主插件,不要用图形界面 - 查看插件文档或
.vsix包内package.json的extensionDependencies字段,找出所有依赖项(如ms-python.python依赖ms-toolsai.jupyter) - 每个依赖项也得单独下载对应
.vsix,按依赖顺序依次执行code --install-extension - 安装后检查
~/.vscode/extensions(或VSCODE_EXTENSIONS指向路径)下是否生成对应文件夹,而非空目录
代理配置只影响 marketplace 连接,不影响插件运行时行为
你在 settings.json 里配的 http.proxy 和 https.proxy,只控制 VSCode 启动 Extension Host 进程时访问 marketplace.visualstudio.com 和 vscode.blob.core.windows.net 的网络路径。它跟插件自身是否能联网无关。
比如你装了 REST Client 插件,它发 HTTP 请求走的是 Node.js 的底层网络栈,不受 VSCode 代理设置影响;同理,Python 插件调 pip 安装包,走的也是系统级代理或 .pip/pip.conf。
- 代理地址必须以
http://开头,https://会直接失效(VSCode 内部用的是 http.Agent) - 若代理需认证,格式应为
http://user:pass@proxy.company.com:8080,不能用 NTLM 或 Kerberos - 设完代理后必须重启 VSCode 全局进程(不只是 Reload Window),否则 Extension Host 仍用旧配置缓存
真正可控的“源”只有 VSCODE_EXTENSIONS + 符号链接,适合多环境隔离
如果你要让不同项目/团队用不同插件集合(比如前端组用一套,嵌入式组用另一套),唯一稳定方案是彻底绕过 Marketplace,用目录隔离 + 启动参数控制。
核心操作是把插件目录从默认位置挪走,再用符号链接或环境变量绑定:
- Windows:用
mklink /D %USERPROFILE%\.vscode\extensions D:\projects\frontend-extensions - macOS/Linux:用
ln -sf /path/to/project-extensions ~/.vscode/extensions - 更稳妥的方式是设环境变量
VSCODE_EXTENSIONS,然后每次用code --extensions-dir $VSCODE_EXTENSIONS启动 - 注意:修改后必须杀掉所有
Code Helper进程(任务管理器或pkill -f "Code Helper"),否则旧插件仍在内存中运行
这个路径才是你真正能“自定义”的源——它不涉及网络、不依赖签名、不触发 Marketplace 校验,插件只要文件结构合规,就能加载。但代价是失去自动更新和 Marketplace 搜索能力,得自己维护版本和依赖关系。


















