VS Code通过工作区(.code-workspace)实现多项目协同,而非多窗口并行;需手动创建并配置JSON格式工作区文件,明确指定文件夹路径、设置及调试参数,依赖${workspaceFolder:xxx}变量和活动文件夹机制确保环境隔离与正确执行。

VS Code 本身不支持传统意义上的“多项目并行编辑”(比如每个项目独占一个窗口且互不干扰),但通过 工作区(Workspace) 和资源管理器的合理配合,可以高效组织多个相关项目——关键不是“同时打开所有项目文件夹”,而是按需组合、隔离配置、复用扩展。
工作区文件(.code-workspace)才是多项目协同的核心
直接把多个文件夹拖进 VS Code 窗口,只是临时合并显示,不会保存路径、设置或调试配置。真正管理多项目,必须创建 .code-workspace 文件:
- 菜单栏选择
File > Save Workspace As…,保存为my-team-workspace.code-workspace - 该文件是纯 JSON,可手动编辑:添加多个
"folders"条目,每个指向独立项目根目录 - 工作区内每个文件夹保持自己的
.vscode/settings.json,互不影响;全局设置仍生效,但会被工作区/文件夹级设置覆盖 - 调试配置(
launch.json)写在工作区级.vscode/下,就能跨项目复用同一套configurations
{
"folders": [
{ "path": "../backend" },
{ "path": "../frontend" },
{ "path": "../shared-lib" }
],
"settings": {
"editor.tabSize": 2
}
}
资源管理器里右键「添加文件夹到工作区」容易误操作
这个操作看似方便,实则风险高:它会直接修改当前工作区文件,且不校验路径有效性。常见问题包括:
- 添加了不存在的路径,下次打开工作区时报错
Unable to resolve non-existing folder - 路径用了相对路径(如
./projects/foo),换机器后失效;务必用绝对路径或基于工作区文件位置的相对路径(推荐后者) - 重复添加同一文件夹,导致资源管理器中出现两个同名节点,但实际是同一份代码,容易误删或混淆
- 添加后未保存工作区文件,关闭窗口即丢失——VS Code 不会自动保存变更后的
.code-workspace
多项目调试时 launch.json 的 cwd 和 program 路径必须显式指定
工作区里有多个项目,launch.json 中若只写 "program": "./dist/index.js",VS Code 默认以工作区根目录为基准,而非当前打开的文件所在项目。结果就是找不到文件或运行错项目。
- 正确做法:对每个
configuration显式设置"cwd"和完整"program"路径,例如:"cwd": "${workspaceFolder:backend}" -
${workspaceFolder:xxx}是关键变量,其中xxx必须与.code-workspace中folders的path名称一致(VS Code 自动提取最后一级目录名作为标识) - 如果项目名含空格或特殊字符,VS Code 可能截断或转义,此时应手动在
.code-workspace中加"name"字段统一标识
扩展和终端行为受「活动文件夹」影响,不是整个工作区
资源管理器顶部显示「活动文件夹」(粗体高亮的那个),它决定了:
- 终端启动位置:
Terminal > New Terminal默认进入该文件夹,不是工作区根目录 - Python 扩展选解释器、Pylint 路径、Jest 配置加载,都优先查活动文件夹下的
.vscode/settings.json或项目根配置 - Git 扩展只显示活动文件夹的仓库状态;其他文件夹的 Git 变更不会汇总显示(除非启用
git.autoRepositoryDetection并设为true)
切换活动文件夹只需在资源管理器中单击任一文件夹名——这点常被忽略,导致终端命令失败或 Python 导入报错,其实只是当前活动文件夹没选对。










