.vscode/extensions.json是唯一可靠方式,需置于项目根目录的.vscode/下,含合法JSON格式的"recommendations"字段及正确publisher.name格式插件ID,首次打开工作区时触发推荐横幅。

如何让团队成员自动装上同一套插件
直接在项目根目录建 .vscode/extensions.json,VSCode 会识别并提示安装推荐插件——但不会自动装,必须手动点“Install”或运行 Extensions: Install Recommended Extensions 命令。
常见错误现象:协作者拉完代码后没看到任何提示;或者提示了但点了没反应。原因通常是:extensions.json 格式不合法,或插件 ID 写错(比如把 esbenp.prettier-vscode 写成 prettier)。
- 文件必须放在项目根目录的
.vscode/下,不能放在子目录或用户家目录 - 内容是标准 JSON 数组,每个元素是扩展 ID 字符串,例如:
["esbenp.prettier-vscode", "ms-python.python"] - 插件 ID 必须和 VS Code Marketplace 页面 URL 最后一段完全一致(不是展示名,也不是发布者名)
- 如果插件有平台限制(如仅 Windows),其他平台用户会静默跳过,不报错也不提示
为什么 .vscode/settings.json 有时不生效
VSCode 加载配置的优先级是:工作区设置(.vscode/settings.json) > 用户设置(settings.json) > 默认设置。但前提是它被识别为“工作区”——即你通过「File → Open Folder」打开的是包含该文件的文件夹,而不是单个文件或空窗口。
容易踩的坑:.vscode/settings.json 在 Git 里提交了,但新成员用双击方式打开某个 .ts 文件,VSCode 启动的是“文件模式”,根本不会加载工作区配置。
- 确保团队统一用「Open Folder」打开整个项目,而非单文件
- 不要在
.vscode/settings.json中写绝对路径字段,如python.defaultInterpreterPath—— VSCode 会忽略它们,且不提示 - 某些设置(如
editor.fontSize)会被用户设置覆盖,建议在工作区配置中加注释说明用途,避免被误删 - 若想强制启用某项设置(如禁用格式化),可用
"[javascript]": { "editor.formatOnSave": false }这种语言专属语法
Settings Sync 为什么同步不了 .vscode 里的文件
VSCode 官方 Settings Sync 明确不上传任何工作区级配置,包括 .vscode/settings.json、.vscode/tasks.json、.vscode/launch.json 和 .vscode/extensions.json —— 这是设计使然,不是 bug。
这意味着:你登录账号开启同步后,在另一台设备上看到的仍是自己原来的用户设置,不会拉取项目里定义的那些规则。
- Settings Sync 只同步用户级配置(即通过
Ctrl+, → Open Settings (JSON)编辑的那个settings.json) -
.vscode/下所有文件都属于工作区范围,靠 Git 管理 + 开发者自觉遵循,不是同步机制能覆盖的 - 有人用第三方插件(如
settings-sync)硬塞工作区配置进同步流,结果导致不同项目配置互相污染,尤其当多个项目共用一个 VSCode 用户实例时 - 真正可靠的做法是:把团队共识类配置(缩进、换行符、保存行为)写进工作区
.vscode/settings.json;把个人偏好类(字体大小、主题色)留在用户设置里
Live Share 期间插件行为为何不一致
Live Share 共享的是“编辑状态”和“调试上下文”,不是插件本身。协作者本地没装的插件不会被自动安装,已装插件的行为也取决于其是否支持协作场景。
典型问题:主机开了 ESLint 自动修复,协作者保存文件却没触发;或 Prettier 格式化只在主机端生效。
- ESLint、Prettier 等工具依赖本地语言服务器或 CLI,Live Share 不转发这些进程,只同步文本变更
- 插件若未声明支持
workspaceContains或onLanguage激活事件,可能在协作者端根本没激活 - 调试相关插件(如 Python Debugger)需双方都安装对应版本,否则断点无法命中或变量面板为空
- 最稳妥做法:把关键 Linter/Formatter 配置固化到
.vscode/settings.json,并确保extensions.json包含它们——这样新加入者至少知道该装什么


















