多根工作区
你可以在Visual Studio Code中使用多根工作区来处理多个项目文件夹。这在你同时处理多个相关项目时非常有用。例如,你可能有一个包含产品文档的仓库,当你更新产品源代码时,你希望保持文档的最新。

注意:如果您想了解更多关于 VS Code "工作区"的概念,请查看 什么是 VS Code 的 "工作区"? 除非您明确创建一个多根工作区,"工作区" 就是您项目单根的根文件夹。
添加文件夹
将另一个文件夹添加到现有工作区中很容易。有几种手势可以添加文件夹:
将文件夹添加到工作区
文件 > 添加文件夹到工作区 命令会弹出一个打开文件夹对话框来选择新的文件夹。

一旦添加了根文件夹,资源管理器将在文件资源管理器中显示新的根文件夹。您可以右键单击任何根文件夹,并使用上下文菜单添加或删除文件夹。

文件资源管理器应该像以前一样工作和表现。您可以在根文件夹之间移动文件,并使用上下文菜单和资源管理器视图中提供的任何典型文件操作动作。
设置如
拖放
您可以使用拖放功能将文件夹添加到工作区。将文件夹拖动到文件资源管理器中,以将其添加到当前工作区。您甚至可以选择并拖动多个文件夹。
注意:将单个文件夹拖放到 VS Code 的编辑器区域时,仍然会以单文件夹模式打开该文件夹。如果您将多个文件夹拖放到编辑器区域,将创建一个新的多根工作区。
您还可以使用拖放功能在工作区中重新排序文件夹。
多选原生文件打开对话框
打开多个文件夹将创建一个多根工作区。
命令行 --add
将一个或多个文件夹添加到上次活动的 VS Code 实例中,用于多根工作区。
代码 --添加 vscode vscode文档
删除文件夹
您可以使用从工作区移除文件夹上下文菜单命令从工作区中移除文件夹。
工作区文件
当你添加多个文件夹时,它们最初会放置在一个名为未命名工作区的Workpace中,该名称将一直保持,直到你保存该工作区。你不需要保存一个Workpace,直到你希望将其永久保存在一个位置,例如在你的桌面上。只要VS Code实例保持打开状态,未命名工作区就会存在。一旦你完全关闭一个带有未命名工作区的实例,如果你打算将来再次打开它,系统会要求你保存它:

当您保存工作区时,它将创建一个代码工作区文件和文件名将显示在文件资源管理器中。
保存工作区为...
如果你想将工作区文件移动到新位置,可以使用文件 > 另存为工作区命令,该命令将自动设置相对于新工作区文件位置的正确文件夹路径。
打开工作区文件
要重新打开工作区,您可以:
- 双击
代码工作区将文件拖到您的平台的资源管理器中。 - 使用文件 > 打开工作区命令并选择工作区文件。
- 从 文件 > 打开最近使用的 (⌃R (Windows, Linux Ctrl+R)) 列表中选择工作区。
- 工作区有一个(工作区)后缀以将其与文件夹区分开来。

就像 关闭文件夹 当在 VS Code 中打开一个文件夹时,有一个 关闭工作区 (⌘K F (Windows, Linux Ctrl+K F)) 命令可以关闭当前活动的工作区。
工作区文件模式
模式代码工作区这相当直白。你有一个包含绝对或相对路径的文件夹数组。当你想分享工作区文件时,相对路径更好。
您可以使用以下内容覆盖文件夹的显示名称名字 属性,以给资源管理器中的文件夹赋予更有意义的名称。例如,您可以将项目文件夹命名为“Product”和“Documentation”,以便通过文件夹名称轻松识别内容:
{
"folders": [
{
// Source code
"name": "Product",
"path": "vscode"
},
{
// Docs and release notes
"name": "Documentation",
"path": "vscode-docs"
},
{
// Yeoman extension generator
"name": "Extension generator",
"path": "vscode-generator-code"
}
]
}
这将导致以下资源管理器显示:

如上面的例子所示,您可以为您的工作区文件添加注释。
工作区文件还可以包含工作区全局设置在设置 和 扩展建议 在 扩展,我们将在下面讨论。

通用用户界面
编辑器
当您使用多根工作区时,VS Code 的用户界面只会进行少数更改,主要是为了消除文件之间的歧义。例如,如果多个文件夹中的文件名称发生冲突,VS Code 会在标签页标题中包含文件夹名称。

如果您总是希望在标签页标题中看到该文件夹,您可以使用
"workbench.editor.labelFormat":"中等"
VS Code 用户界面,例如 打开编辑器 和 快速打开 (⌘P (Windows, Linux Ctrl+P)) 列表包括文件夹名称。

如果您正在使用 文件图标主题 并且当前主题支持它,您将看到一个特殊的桌面图标。
下面你可以看到内置的Minimal (Visual Studio Code)文件图标主题的工作区图标:
![]()
搜索
VS Code 的功能如全局搜索可以在所有文件夹中工作,并按文件夹分组搜索结果。

当您打开一个具有多个根目录的工作区时,您可以选择通过使用来在单个根文件夹中搜索./ 在 文件包含 盒子中的语法。例如,如果您输入 ./项目1/**/*.txt,将搜索所有.txt文件在项目1/根文件夹。
设置
在一个工作区中如果有多个根文件夹,那么有可能拥有一个.vscode每个根文件夹中的 folder 定义了应应用于该文件夹的设置。为了避免设置冲突,当使用多根工作区时,仅应用资源(文件、文件夹)设置。影响整个编辑器的设置(例如,用户界面布局)将被忽略。例如,两个项目不能同时设置缩放级别。
用户设置支持与单文件夹项目一样,您还可以设置全局工作区设置,该设置将应用于您的多根工作区中的所有文件夹。全局工作区设置将存储在您的代码工作区文件。
{
"文件夹": [
{
"路径": "vscode"
},
{
"路径": "vscode文档"
},
{
"路径": "vscode生成代码"
}
],
"设置": {
"Windows缩放级别": 1,
"文件自动保存": "延迟后保存"
}
}
当你从单个文件夹实例切换到多个文件夹时,VS Code 会将第一个文件夹中的适当编辑器级设置添加到新的全局工作区设置中。
您可以通过设置编辑器轻松地查看和修改不同的设置文件。设置编辑器选项卡允许您选择用户设置、全局工作区设置和单独的文件夹设置。

您还可以使用以下命令打开特定的设置文件:
- 偏好设置:打开用户设置 - 打开您的全局用户设置
- 偏好设置:打开工作区设置 - 打开您的工作区文件的设置部分。
- 偏好设置:打开文件夹设置 - 打开当前活动文件夹的设置。
全局工作区设置覆盖用户设置,文件夹设置可以覆盖工作区或用户设置。
不支持的文件夹设置
不支持的编辑器级文件夹设置将在您的文件夹设置中显示为灰色,并且会被过滤出默认文件夹设置列表。您还会在设置前看到一个信息图标。

调试
使用多根工作区,VS Code 在所有文件夹中搜索launch.json调试配置文件并将其显示为文件夹名称的后缀。此外,VS Code 还会显示在工作区配置文件中定义的 launch 配置。

上面的示例显示了 TSLint 扩展的调试配置。有一个
tslint扩展文件夹以在 VS Code 扩展主机中启动扩展,并且还提供了一个附加配置来自tslint服务器文件夹用于将调试器附加到正在运行的TSLint服务器。
你也可以看到三个添加配置命令用于这些文件夹,tslint,tslint服务器,和tslint测试在 vscode-tslint 工作区中。 添加配置命令将会打开一个现有的 launch.json文件夹中的文件.vscode子文件夹或创建一个新文件夹并显示调试配置模板下拉菜单。

变量 在配置中使用(例如 ${工作区文件夹}或已被弃用的${工作区根目录}) 是相对于它们所属的文件夹解析的。可以通过在变量后面附加根文件夹的名称(用冒号分隔)来为每个工作区文件夹定义一个变量。
工作区启动配置
工作区范围的启动配置存储在"发射" 工作区配置文件的工作区:打开工作区配置文件 在命令面板中:

或者,可以通过“添加配置(工作区)”条目添加新的启动配置:

一个复合发射配置可以按名称引用工作区中名称唯一的单个发射配置,例如:
"化合物": [{
"名称": "启动服务器和客户端",
"配置": [
"启动服务器",
"启动客户端"
]
}]
如果各个启动配置名称不唯一,可以使用更详细的“folder”语法来指定限定文件夹:
"化合物": [{
"名称": "启动服务器和客户端",
"配置": [
"启动服务器",
{
"文件夹": "网页客户端",
"名称": "启动客户端"
},
{
"文件夹": "桌面客户端",
"名称": "启动客户端"
}
]
}]
此外化合物,这个
这是一个示例,展示了程序位于一个名为“Program”的文件夹中,并且在单步执行时应跳过“Library”文件夹中的所有文件:
"启动": {
"配置": [{
"类型": "节点",
"请求": "启动",
"名称": "启动测试",
"程序": "${workspaceFolder:Program}/test.js",
"跳过文件": [
"${workspaceFolder:Library}/out/**/*.js"
]
}]
}
任务
类似于 VS Code 如何搜索调试配置,VS Code 还会尝试从 gulp、grunt、npm 和 TypeScript 项目文件中自动检测任务,以及搜索在工作区中定义的任务。任务.json文件。任务的位置由文件夹名称后缀指示。请注意,任务在任务.json必须是版本2.0.0。

来自 TSLint 扩展工作区 上面的例子中,你可以看到有两个配置的任务 来自 任务.json文件在tslint和tslint测试 文件夹和大量的自动检测的npm和TypeScript编译器 检测到的任务.
工作区任务配置
工作区范围内的任务位于"任务" 工作区配置文件的 section (工作区: 打开工作区配置文件 在命令面板中)。只有 "壳"和"处理"类型任务可以在工作区配置文件中定义。
源代码管理
带有多根工作区,有一个源代码控制提供程序部分,当您有多个活动存储库时,可以为您提供概览。这些提供程序可以由多个 SCM 提供程序贡献;例如,您可以将 Git 存储库与 Azure DevOps Server 工作区并列。当您在此视图中选择存储库时,您可以在下面看到源代码控制的详细信息。

您可以使用Ctrl+点击或Shift+点击来选择多个仓库。它们的详细信息将显示在下面的不同区域。
扩展
如果您是扩展作者,您可以查看我们的采用多根工作区API指南,以了解VS Code多根工作区API以及如何使您的扩展在多个文件夹之间正常工作。
以下是一些采用多根工作区 API 的流行扩展。
注意:如果一个扩展尚未支持多个文件夹,它仍然可以在你的多根工作区的第一个文件夹中工作。
扩展推荐
VS Code 通过 支持文件夹级别的扩展推荐。extensions.json文件夹下的文件.vscode子文件夹。您还可以通过将它们添加到您的全局工作区扩展推荐中来提供全局工作区扩展推荐。代码工作区 文件。您可以使用 扩展:配置推荐扩展(工作区文件夹) 命令打开您的工作区文件并添加扩展标识符({publisherName}.{extensionName})到 扩展.推荐数组。
{
"文件夹": [
{
"路径": "vscode"
},
{
"路径": "vscode文档"
}
],
"扩展": {
"推荐": ["eg2.tslint", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode"]
}
}
下一步
- 什么是 VS Code 的 "工作区"? - 更多关于单文件夹和多根工作区的信息。
- 调试 - 了解如何为您的应用程序设置调试。
- 任务 - 任务允许您在 VS Code 中运行外部工具,如编译器。
常见问题
我怎样才能回到只用一个项目文件夹来工作?
您可以关闭工作区并直接打开文件夹,或者从工作区中删除文件夹。
作为一个扩展作者,我需要做些什么?
请参阅我们的采用多根工作区 API指南。大多数扩展可以轻松支持多根工作区。