VS Code多根工作区需用.code-workspace文件显式定义,包含folders、settings等字段,支持Git跟踪和跨项目调试;单根与多根模式配置加载逻辑不同,工作区设置优先级高于用户设置但须确保正确加载。
vs code 的工作区(workspace)不是“打开多个文件夹”那么简单——它本质是保存一组配置、扩展启用状态和文件夹视图的快照。直接用 file → open folder 打开多个文件夹,只是临时叠加,不持久、不隔离、不支持跨项目调试配置复用。
用 .code-workspace 文件显式定义多根工作区
这是管理多个相关项目(比如前端 + 后端 + 公共工具库)的唯一可靠方式。VS Code 不会自动为你创建这个文件,必须手动初始化或导出。
- 打开所有需要的文件夹后,执行命令
File → Save Workspace As…,保存为my-project.code-workspace - 该文件是纯 JSON,可 Git 跟踪,内容包含
"folders"(路径列表)和可选的"settings"、"extensions"、"launch"等字段 - 后续双击该文件,或用
code my-project.code-workspace命令行打开,就能还原完整上下文 - 注意:路径建议用相对路径(如
{"path": "backend"}),避免硬编码绝对路径导致协作失败
区分「单根」与「多根」工作区的启动行为
VS Code 对这两种模式的处理逻辑完全不同,混淆会导致插件失效或设置不生效。
- 单根工作区(只打开一个文件夹):默认读取该文件夹下的
.vscode/settings.json和.vscode/extensions.json - 多根工作区(.code-workspace):只读取工作区文件顶层的
"settings"字段,忽略各子文件夹内的.vscode/settings.json—— 除非你在 workspace 文件中显式启用"settings": { "remote.extensionKind": { "ms-python.python": ["workspace"] } }这类覆盖项 - 调试配置(
launch.json)必须放在工作区级.vscode/launch.json中,且需用"cwd"显式指定每个 launch 配置对应哪个文件夹
避免 workspace 设置被用户全局设置覆盖
很多人发现工作区里改了 "editor.tabSize" 却没生效,其实是被 User Settings 里的同名设置锁死了。
- 工作区设置优先级高于用户设置,但前提是它真的被加载了——检查左下角状态栏是否显示
Workspace(而不是User或空) - 如果显示
User,说明你当前处于单文件夹模式,或 .code-workspace 文件未正确加载;右键资源管理器顶部空白处,确认 “Open Workspace Settings (JSON)” 是否可用 - 某些扩展(如 Prettier、ESLint)默认读取用户级配置,需在 workspace settings 中强制指定
"prettier.resolveGlobalModules": true或"eslint.workingDirectories"来适配多根结构
真正麻烦的从来不是怎么建工作区,而是当项目目录重构、同事拉代码后路径变化、或者某天想临时加个 docs 文件夹进去时,如何快速同步更新所有相关配置。别依赖记忆,把 .code-workspace 当作项目基础设施的一部分来维护。










