现已发布!阅读 10 月份的新功能和修复。

什么是 VS Code "工作区"?

Visual Studio Code 工作区 是在一个 VS Code 窗口(实例)中打开的一个或多个文件夹的集合。在大多数情况下,您将只有一个文件夹作为工作区打开。但是,根据您的开发工作流程,您可以使用名为 多根工作区 的高级配置包含多个文件夹。

工作区概念使 VS Code 能够

  • 配置仅应用于特定文件夹或文件夹,而不应用于其他文件夹的设置。
  • 持久化 任务调试器启动 配置,这些配置仅在该工作区的上下文中有效。
  • 存储和还原与该工作区关联的 UI 状态(例如,打开的文件)。
  • 有选择地启用或禁用仅适用于该工作区的扩展。

您可能会看到 VS Code 文档、问题和社区讨论中交替使用 "文件夹" 和 "工作区" 术语。将工作区视为具有额外 VS Code 知识和功能的项目的根目录。

注意:也可以在没有工作区的情况下打开 VS Code。例如,当您通过选择平台的 **文件** 菜单中的文件来打开新的 VS Code 窗口时,您将不会在工作区内。在此模式下,VS Code 的一些功能会减少,但您仍然可以打开文本文件并对其进行编辑。

如何打开 VS Code "工作区"?

您可以使用 **文件** > **打开文件夹...** 菜单打开工作区,然后选择一个文件夹。

或者,如果您从终端启动 VS Code,则可以将文件夹的路径作为第一个参数传递给 code 命令以打开。例如,使用以下命令打开当前文件夹 (.) 与 VS Code

code .

单文件夹工作区

您不必为使文件夹成为 VS Code 工作区做任何事情,除了使用 VS Code 打开该文件夹。打开文件夹后,VS Code 会自动跟踪配置,例如您的打开文件或编辑器布局。当您在 VS Code 中重新打开该文件夹时,编辑器将与您上次离开时一样。

您还可以添加其他特定于文件夹的配置,例如特定于工作区的 设置(与全局用户设置相对)、任务定义调试启动 文件(见下文 工作区设置 部分)。

Single-folder workspace

在 VS Code 中打开的单文件夹工作区

多根工作区

多根工作区 是 VS Code 的一项高级功能,允许您配置多个不同的文件夹作为同一工作区的一部分。您不是将文件夹作为工作区打开,而是打开一个 <name>.code-workspace JSON 文件,该文件列出了工作区的所有文件夹。例如

{
  "folders": [
    {
      "path": "my-folder-a"
    },
    {
      "path": "my-folder-b"
    }
  ]
}

Multi-root workspace

在 VS Code 中打开的多根工作区

注意:打开文件夹和打开 .code-workspace 文件之间的视觉差异可能很细微。为了提醒您打开了 .code-workspace 文件,用户界面的某些区域(例如,文件资源管理器根目录)会在名称旁边显示一个额外的 **(工作区)** 后缀。

无标题的多根工作区

您可以灵活地添加或删除工作区中的文件夹。首先在 VS Code 中打开一个文件夹,然后根据需要添加更多文件夹。

File Explorer context menu, highlighting options to add or remove folders to the workspace

文件资源管理器上下文菜单,用于添加或删除工作区中的文件夹

除非您已经打开了 .code-workspace 文件,否则当您第一次将第二个文件夹添加到工作区时,VS Code 会自动创建一个无标题 工作区。在后台,VS Code 会自动为您维护一个 untitled.code-workspace 文件,其中包含您当前会话中的所有文件夹和工作区设置。工作区将保持无标题 状态,直到您决定将其保存到磁盘。

Untitled multi-root workspace

在 VS Code 中打开的无标题多根工作区

注意:无标题工作区和已保存的工作区之间没有区别,只是无标题工作区会自动为您创建,以方便您使用,并且始终会还原,直到您将其保存。当您关闭打开无标题工作区的窗口时,VS Code 会自动删除无标题工作区(在询问您确认后)。

工作区设置

工作区设置使您能够在打开的工作区的上下文中配置设置。工作区设置始终会覆盖全局用户设置。它们以 JSON 文件的形式物理存储,其位置取决于您是将文件夹作为工作区打开,还是打开了 .code-workspace 文件。

请参考 设置 文档,以全面了解设置范围及其文件位置。

单文件夹工作区设置

当您将文件夹作为工作区打开时,工作区设置存储在 .vscode/settings.json 中。

Single-folder workspace settings

将文件夹作为工作区打开时的设置编辑器

多根工作区设置

当您将 .code-workspace 作为工作区打开时,所有工作区设置都会添加到 .code-workspace 文件中。

您仍然可以为每个根文件夹配置设置,设置编辑器将显示第三个设置范围,称为 **文件夹设置**

Multi-root settings

打开多根工作区时的设置编辑器

为每个文件夹配置的设置会覆盖在 .code-workspace 中定义的设置。

工作区任务和启动配置

工作区设置 仅适用于特定工作区类似,任务和启动配置也可以限定到工作区。

根据您是将文件夹作为工作区打开,还是打开了 .code-workspace 文件,工作区任务和启动配置的位置要么位于 .vscode 文件夹内,要么位于 .code-workspace 文件内。此外,即使您打开了 .code-workspace 文件,任务和启动配置也可以始终在文件夹级别定义。

请参考 任务调试 章节,以更全面地了解如何在 VS Code 中使用任务和启动配置。

常见问题

与文件夹相比,多根工作区有什么优势?

最明显的优势是,多根工作区允许您使用多个项目,这些项目可能不会存储在磁盘上的同一父文件夹内。您可以从任何位置选择文件夹添加到工作区。

即使您主要在单个文件夹的项目中工作,使用 .code-workspace 文件也能带来好处。您可以在文件夹中存储多个 .code-workspace 文件,以根据场景提供项目特定方面的限定文件夹视图(例如,client.code-workspaceserver.code-workspace 用于从文件资源管理器中过滤掉无关文件夹)。由于 .code-workspace 文件支持 folders 部分的相对路径,因此这些工作区文件适用于所有人,与文件夹的存储位置无关。

最后,如果您想对某些项目应用相同的设置或任务/启动配置,请考虑将这些内容添加到 .code-workspace 文件中,并从该工作区添加或删除这些文件夹。

为什么 VS Code 在重启时恢复所有未保存的工作区?

未保存的工作区旨在让您明确决定是否保留。第一次创建未保存的工作区时,VS Code 会将指定的文件夹添加到工作区文件中,并将所有现有工作区设置也添加到其中。此用户数据始终会恢复并显示在 VS Code 窗口中,直到未保存的工作区被保存或删除。

如何删除未保存的工作区?

您可以通过关闭其窗口并取消保存未保存工作区的提示来删除未保存的工作区。

我可以在没有文件夹的情况下使用多根工作区吗?

可以将 .code-workspace 文件的 folders 部分留空,这样您最终会得到一个不显示任何根文件夹的 VS Code 实例。在这种情况下,您仍然可以存储工作区设置,甚至可以存储任务或启动配置。

VS Code 支持项目或解决方案吗?

VS Code 没有像其他开发工具(例如 Visual Studio IDE)中定义的“项目”或“解决方案”的概念。您可能会在 VS Code 文档中看到“项目”一词,但这通常是指“您正在处理的事情”。根据您的编程语言或框架,工具本身可能支持名为“项目”的东西来帮助定义构建配置或列出包含的文件。