必须通过.code-workspace文件显式创建并保存多根工作区:先清空窗口确保无打开文件夹,再用命令面板执行“Workspaces: Create Workspace from Folder”多选项目根目录,保存为my-app.code-workspace;路径推荐相对路径并置于共同父目录下,launch.json和settings需配置在工作区级且正确使用${workspaceFolder:name}变量。

VSCode 的多根工作区不是“拖几个文件夹进去就完事”,必须通过 .code-workspace 文件显式创建并保存,否则所有调试、搜索、设置行为都会退化为单根模式——你看到的只是多个文件夹平铺,不是真正的工作区。
怎么创建真正可复用的 .code-workspace 文件
直接拖拽或用 Add Folder to Workspace 往已打开的窗口里加目录,只会生成临时上下文,关掉就丢,且 Ctrl+P 搜不到其他根目录下的文件。正确做法是:
- 关闭所有文件夹,确保 VS Code 是空窗口(状态栏显示
No folder opened) - 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Workspaces: Create Workspace from Folder并回车 - 在弹出对话框中按住
Ctrl(Windows/Linux)或Cmd(macOS)多选多个项目根目录 - 保存为
my-app.code-workspace,路径建议放在所有项目的共同父级目录下(例如~/projects/my-app.code-workspace)
不保存就没有持久化配置,后续所有工作区级设置(如 launch.json、tasks.json、settings)都无处落脚。
.code-workspace 里路径写相对还是绝对
填错路径会导致别人拉下代码后打不开工作区,报错 Unable to open workspace: path does not exist。关键不是“对不对”,而是“谁用、在哪用”:
- 团队协作时,优先用相对路径(如
"path": "frontend"),但必须确保该路径相对于.code-workspace文件所在位置有效 - 个人开发且项目位置固定,可用环境变量(如
"path": "${env:HOME}/dev/myapp/backend"),兼顾可读性与基础跨平台兼容 - 绝对路径(如
C:\projects\backend)严禁提交到 Git,会破坏他人环境
别把 .code-workspace 放在某个子项目里——它一旦嵌套进 frontend/ 或 backend/,相对路径就极易失效。
launch.json 和 settings 怎么放才生效
多根工作区里,VS Code 只认工作区级的 .vscode/launch.json 和 .code-workspace 中的 settings 字段。各子文件夹下的 .vscode/settings.json 默认被忽略,除非你在工作区配置里显式启用覆盖。
-
launch.json必须放在工作区根目录的.vscode/下,每个configuration要配"cwd": "${workspaceFolder:frontend}",其中frontend必须与.code-workspace中对应folders的name字段一致(没设name就默认取文件夹名) - 工作区级设置写在
.code-workspace的"settings"字段里,例如:"files.exclude": {"**/node_modules": true} - 想让某个子文件夹保留自己的设置(比如 Python 解释器路径),得在
.code-workspace中加"settings": { "python.defaultInterpreterPath": "./venv/bin/python" },并确保该路径相对于对应folder有效
常见错误:在 .code-workspace 里写了 "eslint.workingDirectories" 却没加 ["./frontend", "./backend"],导致 ESLint 只扫第一个文件夹。
终端和搜索为什么总“找不到”其他项目
多根工作区下,VSCode 新开终端默认进入的是 .code-workspace 文件所在目录,不是你当前编辑的文件所属子项目;Ctrl+P 搜索也只在“当前活动根”下进行,除非你已显式保存为工作区文件。
- 终端要进指定子项目,手动执行
cd frontend或右键对应文件夹 →Open in Integrated Terminal - 搜索跨项目文件,必须先确认已通过
.code-workspace加载全部根目录,再用Ctrl+Shift+F全局搜索(此时会包含所有根) - 如果仍搜不到,检查资源管理器顶部是否显示
[工作区]标识;没有说明只是临时多文件夹,不是真工作区
最常被忽略的一点:工作区配置不会自动继承子项目里的 .vscode/settings.json,必须主动在 .code-workspace 中声明启用,或者把关键配置(如格式化、语言服务器路径)下沉到各子项目自己的 .vscode/settings.json 里。


















