直接用.code-workspace文件管理多个项目是vscode唯一官方支持、可复现、可协作的方案;必须空窗口下执行workspaces: create workspace,多选根目录后保存为.code-workspace,路径建议相对,settings仅覆盖显式字段,launch.json须置于工作区根目录并正确配置cwd与envfile变量,切换前需手动关闭标签页防污染。

直接用 .code-workspace 文件管理多个项目,是 VSCode 唯一官方支持、可复现、可协作的方案;其他方式(比如反复“打开文件夹”、拖拽进窗口、开多个独立窗口)都会丢失跨项目搜索、统一调试配置、共享终端上下文等关键能力。
怎么创建有效的 .code-workspace 文件
不能靠“Add Folder to Workspace…”临时拼凑完就关掉——那样不会生成可复用的配置文件。必须显式保存为 .code-workspace 才能固化路径和设置:
- 确保 VS Code 是空窗口(没打开任何文件夹),再按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Workspaces: Create Workspace回车 - 在弹出的文件选择框中,按住
Ctrl(Windows/Linux)或Cmd(macOS)多选多个项目根目录(如./backend、./frontend) - 保存为
my-team.code-workspace,文件会自动生成标准 JSON 结构,包含"folders"和可选的"settings"字段 - 路径建议用相对路径(如
"path": "../backend"),但要确保该.code-workspace文件放在团队约定的统一父目录下;绝对路径虽稳定,换机器就得手动改
.code-workspace 里的 settings 为什么有时不生效
工作区级 settings 确实优先级最高,但只覆盖你**明确写进去的字段**,不会继承或补全其他设置:
- 如果某个子项目(如
backend/)自己有.vscode/settings.json,它里面的python.defaultInterpreterPath仍会生效——而你在.code-workspace中没写这一项,就不会被覆盖 -
"files.exclude"这类设置一旦在.code-workspace中声明,就会作用于所有根文件夹;但如果漏写了"eslint.enable",那各子项目自己的.vscode/settings.json依然管用 - 保存后,
.code-workspace中的settings会自动格式化(注释清空、缩进变 2 空格),别指望保留手写注释
调试多个服务时,launch.json 必须放对位置
VSCode 只读取工作区根目录(即 .code-workspace 文件所在目录)下的 .vscode/launch.json,不会扫描各个子文件夹里的同名文件:
- 把
.vscode/launch.json放在和my-team.code-workspace同级的目录里,不是放在backend/或frontend/下面 - 每个
configuration必须设"cwd": "${workspaceFolder:backend}",其中backend是你在folders数组里给该路径起的name(不写name默认用文件夹名) - 若需引用某子项目的环境变量文件,
"envFile"路径要用${workspaceFolder:backend}变量拼接,不能写死相对路径
最常被忽略的一点:切换工作区前必须手动关闭所有标签页和终端实例,否则旧上下文(比如正在运行的 npm run dev、未保存的编辑器状态)会污染新工作区;VSCode 不会自动清理这些状态,也没有“软切换”机制。











