VSCode插件默认存于用户主目录全局扩展目录,与项目代码完全隔离;项目中的.vscode/extensions.json仅作推荐,不控制安装或启用,插件实际运行依赖全局目录中的编译产物和激活条件。

VSCode 插件不会自动写入项目目录,所有用户安装的插件默认存放在用户主目录下的全局扩展目录中,和你的项目代码完全隔离——这是设计使然,不是 bug。
为什么 vscode-mysql 的 src/ 目录结构和你本地插件无关
你看到的 vscode-mysql/ 项目结构(比如 src/commands/、src/connection/)是该插件的**源码开发目录**,属于插件作者的工程组织方式。它和你在 VSCode 里“安装插件”这个动作毫无关系。
当你从 Marketplace 安装 vscode-mysql,VSCode 实际只是把编译后的产物(如 extension.js、package.json)解压到你的全局插件目录(例如 C:\Users\Alice\.vscode\extensions\cweijan.vscode-mysql-1.14.0),不会往你的项目里塞任何文件。
- 项目根目录下出现
.vscode/extensions.json,只表示“推荐安装这些插件”,不等于已安装或已生效 -
.vscode/settings.json可以配置插件行为(如 MySQL 连接字符串),但它本身不包含插件逻辑 - 插件运行时加载的是全局目录里的代码,不是你项目里某个
src/下的 TypeScript 源文件
如何确认插件是否真被加载进当前工作区
插件是否起作用,取决于它是否满足激活条件(activationEvents),而不是你有没有把它的源码拷进项目。常见误判场景:
- 装了
vscode-mysql,但没在settings.json里配mysql.connections→ 连接面板不显示 - 项目里有
.vscode/目录,但插件实际未启用 → 检查命令面板是否能搜到MySQL: Connect - 插件依赖特定文件类型(如打开
.sql文件才激活),而你当前编辑的是.js→ 不会加载
最直接验证方式:按 Ctrl+Shift+P(macOS 为 Cmd+Shift+P),输入 Developer: Show Running Extensions,看目标插件状态是否为 “Active”。若显示 “Inactive”,说明尚未触发其激活事件。
--extensions-dir 改路径后,项目仍找不到插件?
用 code --extensions-dir /path/to/custom 启动 VSCode,确实能切换插件存储位置,但要注意:
- 旧插件不会自动迁移,需手动复制原
extensions/下对应文件夹过去 - 如果通过快捷方式启动 VSCode 却没带该参数,它仍会读默认路径(
~/.vscode/extensions) - 某些插件(尤其是含 native addon 的)可能因路径变更导致
require失败,报错类似Error: Cannot find module './binding.node'
建议只在磁盘空间紧张或需多环境隔离时使用该参数;日常开发保持默认路径更稳妥。
真正影响项目协作的是 .vscode/extensions.json 和 .vscode/settings.json —— 它们定义“该装什么”和“怎么用”,而非“插件在哪”。插件本身永远在用户级目录,这是 VSCode 的沙箱机制决定的,绕不开,也不该绕。


















