VSCode多项目需用多根工作区:拖入多个文件夹仅识别第一个;应通过File>Add Folder to Workspace添加并保存为.code-workspace文件,才能在资源管理器中显示所有根文件夹。

多项目打开时,为什么资源管理器只显示一个文件夹?
VSCode 默认以「单根文件夹」模式启动,即使你拖入多个文件夹,它也只会把第一个作为工作区根目录,其余被忽略。这不是 bug,而是设计逻辑:资源管理器天然绑定 workspace 的根路径。
真正支持多项目并存的机制是「多根工作区」(Multi-root Workspace),必须显式创建 .code-workspace 文件才能启用。
- 不要直接拖拽多个文件夹到 VSCode 窗口——这只会打开第一个
- 正确做法:菜单栏选择
File > Add Folder to Workspace...,逐个添加;或先新建空工作区再添加 - 添加后务必保存为
.code-workspace文件(如my-projects.code-workspace),否则关闭后配置丢失 - 保存后,资源管理器顶部会显示工作区名称,并列出所有已添加的根文件夹(带图标区分)
如何让不同项目使用各自独立的设置和扩展?
VSCode 的设置分三层:用户级(全局)、工作区级(.code-workspace)、文件夹级(各项目根目录下的 .vscode/settings.json)。多项目管理中,优先级和作用域容易混淆。
JTopCMS基于JavaEE自主研发,是用于管理站群内容的国产开源软件(CMS),能高效便捷地进行内容采编,审核,模板制作,用户交互以及文件等资源的维护。安全,稳定,易扩展,支持国产中间件及数据库,适合建设政府,教育以及企事业单位的站群系统。 系统特色 1. 基于 JAVA 标准自主研发,支持主流国产信创环境,国产数据库以及国产中间件。安全,稳定,经过多次政务与企事业单位项目长期检验,顺利通过
-
settings.json放在某个子文件夹下(如frontend/.vscode/settings.json),只影响该文件夹及其子目录(比如只对前端项目启用eslint.enable) -
.code-workspace中的settings字段,作用于整个工作区——适合统一关闭干扰项(如禁用所有项目的editor.formatOnSave) - 扩展本身不按项目隔离,但可配合
extensions.ignoreRecommendations+ 工作区级recommendations控制提示,避免后端项目弹出 React 插件推荐 - 注意:某些扩展(如 Prettier、ESLint)依赖工作区根路径查找配置文件(
.prettierrc、eslintrc.js),若跨文件夹生效异常,大概率是它们没在对应项目根目录下
终端、调试、任务默认作用域为什么总“串项目”?
VSCode 的集成终端、调试器、任务(tasks.json)默认基于「活动编辑器所在的文件夹」决定上下文,但这个逻辑在多根工作区里容易失效——尤其当你从一个项目跳到另一个、却没点击其任意文件时。
- 终端默认启动位置是「当前打开文件所属的文件夹」;如果当前无文件打开,则回退到第一个添加的根文件夹
- 调试时,
launch.json必须放在对应项目的.vscode/下,且cwd字段要设为${workspaceFolder}(不是${workspaceFolderBasename}) - 任务(
tasks.json)同理:每个项目应有自己独立的.vscode/tasks.json,并在其中用${fileDirname}或${workspaceFolder}明确路径变量 - 快捷键
Ctrl+Shift+P>Terminal: Create New Terminal (In Active Workspace)可强制指定终端归属,避免误开在错误项目下
为什么搜索(Ctrl+Shift+F)会扫到不相关的项目文件?
默认情况下,多根工作区的全局搜索会遍历所有已添加的根文件夹。如果你只关心当前编辑的项目,又不想每次手动排除,就得调整搜索范围逻辑。
- 搜索框右上角的
…按钮可展开「files to include/exclude」,输入!backend/**排除后端项目(但需手动维护) - 更可靠的做法:在资源管理器中右键某个文件夹 →
Find in Folder,此时搜索仅限该子树 - 或者,在搜索框中直接输入路径前缀,如
frontend/src/**.ts,VSCode 会自动限制范围 - 注意:
search.exclude是全局设置,对多根工作区无效;真正起效的是工作区级files.exclude和搜索时的临时路径过滤
pnpm workspace 或 nx 等专用工具管理,VSCode 仅作为编辑器配合。









