多根工作区本质是通过 .code-workspace 文件统一管理多个项目,需显式“另存为”才能持久化;设置优先级为文件夹级 > 工作区级 > 用户级;调试配置必须按文件夹隔离;推荐使用 Project Manager 等扩展提升体验。

多根工作区不是“打开多个窗口”,而是用一个 code-workspace 文件统一加载
VSCode 的“多项目管理”本质是创建一个多根工作区(multi-root workspace),它不是一个 UI 功能开关,而是一个带 .code-workspace 后缀的 JSON 配置文件。直接用「文件 → 打开文件夹」反复添加,只会切换当前根目录,不会叠加;必须显式保存为工作区才能持久化多个文件夹路径。
常见错误现象:
– 在资源管理器里右键“将文件夹添加到工作区”,但没点「文件 → 将工作区另存为…」→ 关闭 VSCode 后所有添加的文件夹丢失
– 把多个项目文件夹拖进已打开的 VSCode 窗口 → 实际只替换了当前工作区,旧根被丢弃
- 正确流程:先打开一个项目文件夹 → 「文件 → 将文件夹添加到工作区…」添加其他路径 → 最后「文件 → 将工作区另存为…」生成
my-projects.code-workspace - 该文件可被 Git 跟踪(建议提交,尤其含共享设置时),但注意不要提交敏感配置如
env或密钥 - 后续双击该文件,或执行
code my-projects.code-workspace即可复现完整结构
settings.json 在多根工作区里分三层生效:用户 → 工作区 → 文件夹
多根工作区下,设置优先级是:文件夹级 > 工作区级 > 用户级。其中「工作区级」指 .code-workspace 文件内嵌的 settings 字段,「文件夹级」指各项目根目录下的 .vscode/settings.json。
典型冲突场景:
– 你在工作区级设了 "editor.tabSize": 2,但某个前端项目需要 4 → 它的 .vscode/settings.json 会覆盖全局值
– 你把 ESLint 插件的 "eslint.enable": true 写在用户设置里,结果 Python 项目也触发校验 → 应移到对应文件夹的 .vscode/settings.json 中禁用
- 推荐策略:工作区级只放跨项目通用设置(如
"files.exclude"、"search.exclude") - 语言/框架相关配置(如 Prettier、TypeScript path mapping、Python interpreter 路径)一律放在对应文件夹的
.vscode/settings.json中 - 检查当前生效设置:按
Ctrl+Shift+P→ 输入「Preferences: Open Settings (JSON)」→ 看顶部注释提示“Workspace settings”还是“Folder settings”
调试配置 launch.json 必须按文件夹隔离,不能共用一个
VSCode 调试器不支持跨文件夹复用 launch.json。每个文件夹若需调试,必须在自己的 .vscode/launch.json 中定义独立配置,且 cwd、program、envFile 等路径都需相对本文件夹根目录书写。
常见错误:
– 在工作区根目录建一个 .vscode/launch.json,试图用变量 ${workspaceFolder:project-a} 指向不同项目 → VSCode 不识别这种语法
– 复制粘贴同一份 launch.json 到多个文件夹,但忘了改 program 路径 → 启动时报错 Cannot find module
- Node.js 项目示例(放在
project-a/.vscode/launch.json中):{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch project-a", "skipFiles": ["/**"], "program": "${workspaceFolder}/src/index.js", "console": "integratedTerminal" } ] } - Python 项目同理:确保
"python.defaultInterpreterPath"是本项目虚拟环境路径,且写在project-b/.vscode/settings.json中,而非工作区级 - 调试时,左下角状态栏会显示当前激活的文件夹名,确认选对了再点 ▶️
扩展推荐:靠 Workspace Trust 和 Project Manager 补足原生短板
VSCode 原生多根工作区不提供快速切换、自动恢复上次打开的项目列表、或按类型过滤等功能。两个轻量扩展能显著改善体验:
-
Workspace Trust:多根工作区默认启用信任机制,但某些项目(如从 GitHub 直接 clone 的 demo)可能被标记为“不受信任”,导致插件禁用、终端受限。该扩展帮你一键批量信任/取消信任指定文件夹 -
Project Manager:把常用工作区注册为项目,快捷键Ctrl+Cmd+P(macOS)或Ctrl+Shift+P(Win/Linux)输入「Project Manager: List Projects」即可秒开。适合日常高频切换 5+ 个项目的场景 - 注意:这两个扩展都不修改
.code-workspace结构,只是操作层增强;卸载后原有工作区照常可用
真正容易被忽略的是:工作区文件里的 folders 数组顺序决定了资源管理器中文件夹的排列顺序,如果某项目总被遮挡,手动调整 JSON 里路径顺序比拖拽更可靠。










