VS Code中的"工作区"是什么?

Nat*_*uhn 369 visual-studio-code

我不敢相信我在问这个问题,但我无法在文档中找到定义.如果不是很明显,我(非常)是VS Code的新手.

例如,VS Code讨论了在用户级别与工作区级别应用设置.

一方面,(a)它可以引用你打开的项目目录; 或(b)它可以指您在特定窗口中打开的所有内容.

上面引用的页面显示"工作区:这些设置存储在工作区内的.vscode文件夹中,仅在打开工作区时应用."

小智 123

您可以在工作区级别保存设置,并可以在工作区中打开多个文件夹.如果要执行上述任一操作,请使用工作区,否则只需打开文件夹即可.

VS Code工作空间是项目文件夹和文件的列表.工作区可以包含多个文件夹.您可以自定义工作区的设置和首选项.

  • "您可以在工作区级别保存设置,并且可以在工作区中打开多个文件夹.如果您要执行其中任何一项,请使用工作区." 从技术上讲,您不需要工作区来保存文件夹级别的设置.这可以通过相关文件夹中.vscode文件夹中的`settings.json`来完成.但是,如果要在工作空间中使用多个文件夹,并且需要应用于所有文件夹的设置,则必须使用工作空间. (8认同)
  • 对我来说听起来有点像 Visual Studio 中的解决方案 (4认同)
  • 我是 VS Code 的新手,但我看不到为每个项目打开一个工作区的方法。如果我打开一个新文件并尝试保存一个新的工作区,我会移动现有的工作区文件。所以我认为工作区 == 项目是不正确的。 (2认同)
  • 当OP没有提供“工作区”的定义时,这是如何被接受的答案? (2认同)
  • Visual Studio Code 中的工作区令人难以置信。直来直去。我真的不明白为什么 VSC 的创建者不只是遵循项目范式。 (2认同)

jab*_*tta 110

什么是工作区?

一个项目,由一个或多个根文件夹以及该项目的所有VSCode配置组成。这些配置包括以下数据:

为什么工作区如此混乱?

VSCode不在整个UI中始终使用该术语(我已经解决了GitHub问题)。有时,它指的是如上所述的工作空间,而有时,它指的是特定于.code-workspace文件的工作空间。

最近的文件小部件就是一个很好的例子。请注意,在链接的屏幕截图中,所有项目都分组在相同的“工作区”标题下,这表明所有内容都存在一个工作区。但是,随后.code-workspace给带有文件的项目指定了“工作区”后缀,这与标题相反,并表明只有那些文件实际上是工作区。

什么是.code-workspace文件?

带有注释JSON文件,除了存储以下内容外,还存储上述所有配置数据:

  • 属于工作区的所有根文件夹的位置

我需要.code-workspace文件吗?

仅在创建多根工作区时。在多根工作区中,您只有一个.code-workspace文件,可以打开要在资源管理器中显示的所有根文件夹(也就是说,您无需一直手动打开多个文件夹)。每次打开该工作空间文件时,将还原要应用于该工作空间的所有VSCode设置/配置。

单文件夹项目呢?

一切都是自动化的。当您在VSCode中打开一个文件夹并开始对与您当前正在处理的项目特别相关的编辑器进行修改时,VSCode会自动创建一个.vscode文件夹并将其存储在您正在处理的项目文件夹的根目录中。该.vscode文件夹具有存储您所做的更改的文件。例如,如果您更改了仅希望应用于当前项目的VSCode设置,则VSCode会创建settings.json具有这些更新的文件,并将该文件存储在.vscode文件夹中。

.code-workspace如果确实需要,您可以创建一个仅包含单个根文件夹的文件。然后,您可以直接打开项目文件夹,也可以打开工作区文件。但是我想不出为什么会有好处。

如何创建.code-workspace文件?

File > Save Workspace As...

如何将根文件夹添加到工作区?

转到File > Add Folder to Workspace...

如何打开.code-workspace文件定义的工作区?

双击.code-workspace文件。VSCode无法打开实际文件。相反,它将读取该文件并打开属于该工作区的文件夹。或者,转到File > Open Workspace...

如何查看实际.code-workspace文件?

转到File > Open...并选择目标.code-workspace文件。或者,打开与该文件关联的工作区,然后打开命令面板,搜索并选择Workspaces: Open Workspace Configuration File命令。

  • 谢谢@jabacchetta。我两年前问过这个问题。在那之后不久,我认为WS的定义实际上发生了变化,因此这一直是一个僵尸问题。但是由于人们的困惑,我得到了很多SO代表。我不得不承认,观看要点很高兴,我也没有动力去进行讨论。但是您的答案是如此完整和清晰,并且您已经提出了一个问题,以使代码编写人员可以解决这种混乱。我觉得不接受这个答案会很不友善。谢谢! (8认同)
  • 您可能为单个根文件夹创建“.code-workspace”文件的原因之一是,VSCode 不会在“.vscode/settings.json”中遵循某些设置(例如“files.associations”),但会在明确的工作空间中获得荣誉。 (2认同)

小智 78

工作空间只是一个带有(.code-workspace)扩展名的文本文件.您可以通过使用文本编辑器打开它来查看它.我也对工作空间的概念以及如何在VS Code中实现它感到沮丧.我发现了一种适合我的方法.

从单个"项目"文件夹开始.

打开VSCode并关闭所有打开的工作区或文件或文件夹.您应该只在EXPLORER中看到"OPEN EDITORS"和"NO FOLDER OPENED".从菜单栏 - >文件 - >打开文件夹...导航到要放置文件夹的位置,然后右键单击以打开新文件夹.将其命名为您想要的任何名称,然后单击"选择文件夹".它将出现在VS Code EXPLORER中.

现在,从菜单栏 - >文件 - >将工作区另存为...命名工作区并将其保存到您想要保留所有工作区的位置(不一定是项目文件夹所在的位置).我把我的全部放在一个名为"VS Code workspace"的文件夹中.

它将保存为(.code-workspace)文件,并且只是它包含(或指向)所有文件和文件夹的索引,无论它们位于硬盘驱动器上的哪个位置.您可以通过使用文本编辑器打开它来查看它.关闭您创建的文件夹并关闭VS Code.

现在找到您的工作区"文件"并双击它.这将使用您在工作区中创建的文件夹打开VS Code.或者您可以打开VS Code并使用"Open Workspace".

您在VS Code工作区中创建的任何文件夹都将位于第一个文件夹中.如果要添加更多顶级文件夹,请先在任意位置创建它们,然后使用VS Code中的"添加到工作区...".


Cha*_*ynt 58

OP中的标题和随后的问题似乎归结为:

  1. VS Code中的工作区是什么?
  2. 工作区设置如何工作?

简短回答:

工作空间是在VSCode中同时打开并在.code-workspace文件中定义的文件夹的虚拟集合.打开此文件将自动打开文件夹集合.这称为"多根"工作空间.

.code-workspace文件还定义了打开工作空间的VSCode实例使用的工作空间设置.

当工作区没有定义的,即你打开自己的文件夹,您可以创建保存在"工作区设置" .vscode\settings.json在该文件夹结构的根文件.


更详细:

VSCode在某些地方使用"工作区"这个词有点含糊不清.第一个需要考虑的用途是调用多根工作空间.

多根工作空间是一组在VSCode实例中共同打开的文件夹("根").这些文件夹不需要共享父文件夹; 实际上,这是因为VSCode通常在资源管理器侧栏中使用单个文件夹.

多根工作空间由.code-workspace(JSON)文件定义,该文件包含要包含在工作空间中的文件夹列表和VSCode设置.

关于那些工作区设置......

打开文件>首选项>设置时,将显示设置编辑器.至少你应该看到一个USER SETTINGS选项卡.这些是本地计算机上的用户帐户通用的VSCode设置.在Windows中,这些都保存在%APPDATA%\Code\User\settings.json.

单个文件夹(通常是工作空间中的每个"根"文件夹)可能具有.vscode包含其自己settings.json文件的文件夹.单独打开时,即不作为工作空间的一部分打开时,这些settings.json文件的内容将显示在WORKSPACE SETTINGS选项卡下,并且正在运行的VSCode实例将使用该文件中的所有设置.

打开多根工作空间时,事物的行为会有所不同.首先,WORKSPACE SETTINGS选项卡显示.code-workspace文件中设置的选项.其次,任何带有settings.json文件的文件夹都会显示在新的FOLDER SETTINGS选项卡下.请注意,在多根工作空间中,仅使用每个文件夹中的有限数量的设置settings.json.我建议你打开上面的链接进一步阅读.


sdl*_*ins 17

AFAIK工作区的主要功能是允许添加多个独立的文件夹来组合项目.例如:

- WorkspaceProjectX  
-- ApiFolder   (maybe /usr/share/www/api)  
-- DocsFolder  (maybe /home/user/projx/html/docs)  
-- WebFolder   (maybe /usr/share/www/web)
Run Code Online (Sandbox Code Playgroud)

这样您就可以将工作空间中的那些分组为特定项目,而不必打开多个文件夹窗口.

你可以在这里了解更多.

  • 这是最好的答案,因为它解决了使用工作空间的“原因”。您可以找到有关工作空间机制的各种技术定义,但很难理解我为什么要使用它。该工作区类似于 Visual Studio Professional 中的“解决方案”。 (4认同)
  • 这是一个很大的区别。我已经通过打开包含 .sln 文件的文件夹来将单文件夹工作区与多个项目一起使用,该文件引用了包含项目的子目录。但它们都与解决方案维护的依赖层次结构相关。多根工作空间不会有这样的关系。 (2认同)

blu*_*ray 10

简短回答:

\n

使用文件夹而不是单个文件夹工作区。

\n

仅在需要时使用多根工作区。当您需要使用多个项目文件夹时,您需要多根工作区。当您同时处理多个相关项目时,这会非常有帮助。例如,您可能有一个包含产品文档的存储库,您希望在更新产品源代码时使其保持最新。

\n

为什么“仅在需要时使用多根工作区”?

\n

单文件夹工作区和文件夹之间基本上只有两个区别:

\n
    \n
  1. 您可以通过打开单文件夹工作区File > Open Workspace from File...,然后选择一个<name>.code-workspace文件。您可以通过打开文件夹File > Open Folder...,然后选择一个文件夹。

    \n
  2. \n
  3. 当您使用文件打开单文件夹工作区时<name>.code-workspace,所有项目特定设置都将添加到该<name>.code-workspace文件中。当您使用文件夹打开项目时,所有项目特定设置都将保存在.vscode/settings.json文件中。

    \n
  4. \n
\n

即使您花时间<name>.code-workspace为单文件夹工作区创建文件,您也可以通过File > Open Folder.... 根据您的访问方法,有时设置可以在.vscode/settings.json文件中或<name>.code-workspace文件中。最好使用一致的方法来访问您的项目文件夹。此外,启动配置( .vscode/launch.json) 保存在文件夹设置( .vscode/settings.json) 旁边,而不是工作区设置( <name>.code-workspace) 旁边。大多数时候,您.vscode无论如何都需要该目录。

\n

长答案:

\n

文档说:

\n
\n

工作区的概念使 VS Code 能够:

\n
    \n
  • 配置仅适用于特定文件夹或文件夹但不适用于其他文件夹的设置。
  • \n
  • 保留仅在该工作区上下文中有效的任务和调试器启动配置。
  • \n
  • 存储和恢复与该工作区关联的 UI 状态(例如,打开的文件)。
  • \n
  • 仅选择性地启用或禁用该工作区的扩展。
  • \n
\n
\n

另一个地方,它说:

\n
\n

可以通过不同的设置范围在多个级别覆盖\n配置:

\n
    \n
  • 用户设置 - 全局应用到所有 VS Code 实例。
  • \n
  • 工作区设置 - 应用于打开的文件夹或工作区并覆盖用户设置。
  • \n
  • 工作区文件夹设置 - 应用于多根工作区的特定文件夹。覆盖用户和工作空间设置。
  • \n
\n
\n

因此,基本上有三种类型的设置:

\n
    \n
  • 文件夹设置(最高优先级)
  • \n
  • 工作区设置
  • \n
  • 用户设置(最低优先级)
  • \n
\n

您可以通过分配键绑定来修改文件夹设置Preferences: Open Folder Settings然后使用该键绑定来修改文件夹设置。

\n

Ctrl + Shift + P您可以通过\xe2\x86\x92修改工作区设置Preference: Open Workspace Settings

\n

您可以通过以下方式修改用户设置File > Preferences > Settings

\n

您的工作区设置将添加到<name>.code-workspace文件中。

\n

您的文件夹设置将保存在.vscode/settings.json文件中。

\n

有混乱

\n

证据一:

\n
\n

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

\n
\n

证据2:

\n
\n

VS Code“工作区”通常只是您的项目根文件夹。\n工作区设置以及调试和任务配置\n存储在 .vscode 文件夹的根目录中。

\n
\n

证据3:

\n
\n

打开文件夹与打开\n.code-workspace 文件的视觉差异可能很微妙。为了提示您\n.code-workspace 文件已打开,用户界面的某些区域\n(例如文件资源管理器的根目录)\n 在名称旁边显示一个额外的 (Workspace)\ns 后缀。

\n
\n

混乱在哪里?

\n

问题在于细节(文档和实施)。

\n

文档

\n

在文档中,他们说不同的东西是不同的地方。没有一致性。

\n

他们在一个地方说:

\n
\n

VS Code 提供了两种不同的设置范围:

\n
    \n
  • 用户设置 - 全局应用到您打开的任何 VS Code 实例的设置。
  • \n
  • 工作区设置 - 存储在工作区内部的设置,仅在工作区打开时应用。
  • \n
\n
\n

另一个地方他们说:

\n
\n

可以通过不同的设置范围在多个级别覆盖\n配置:

\n
    \n
  • 用户设置 - 全局应用到所有 VS Code 实例。
  • \n
  • 工作区设置 - 应用于打开的文件夹或工作区并覆盖用户设置。
  • \n
  • 工作区文件夹设置 - 应用于多根工作区的特定文件夹。覆盖用户和工作空间设置。
  • \n
\n
\n

所以,基本上他们并没有一致地说有三个级别的设置。特别查看其设置文档的标题。它的标题是“用户和工作空间设置”(请注意标题中如何缺少“文件夹设置”)。当他们谈论设置优先级时,它只提到工作区文件夹设置一次。

\n

执行

\n

文档说:

\n
\n

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

\n
\n

因此,基本上,当存在 \xe2\x80\x99t 任何工作区时(例如,您没有使用打开项目<name>.code-workspace)并且您Ctrl + Shift + P\xe2\x86\x92 Preference: Open Workspace Settings,它会打开.vscode/settings.json文件(实际上用于文件夹设置而不是工作区设置,尽管名称明确表示“打开工作区设置”)。

\n

您可能已经在长答案中注意到: “他们”没有保留任何直接访问文件夹设置的简单方法(您必须为命令分配键绑定Preferences: Open Folder Settings,然后使用键绑定。您甚至无法访问此“命令”从Command Pallet使用Ctrl + Shift + P

\n

此外,您必须使用修改文件夹设置Preference: Open Workspace Settings(请注意,您正在使用“打开工作空间设置”修改“文件夹设置”)。是否Preference: Open Workspace Settings修改文件夹设置或工作区设置取决于您访问项目的方式(使用File > Open Folder...<name>.code-workspace文件)。

\n

他们试图将一件简单的事情过于简单化,从而使其变得困难。

\n


Nat*_*uhn 9

在一些调查中,答案似乎是(a).

当我去更改设置时,设置文件进入我的项目目录中的.vscode目录.

  • 它不仅仅是一个文件夹.您可以将工作空间配置为包含多个目录.我想知道的是工作台和工作区之间的区别. (2认同)

Bil*_*nce 7

我刚刚安装了Visual Studio Code v1.25.1。在Windows 7 Professional SP1计算机上。我想详细了解工作区,因此花了几个小时弄清楚它们在此版本的VS Code中是如何工作的 我认为我的研究结果可能会引起社区的兴趣。

首先,Microsoft在VS Code文档中将工作空间称为“多根工作空间”。用简单的英语来说,意思是“一个多文件夹(又称“根”)工作环境”。VS Code工作区只是文件夹的集合-您想要的任何集合,可以按照您想要的任何顺序进行。文件夹的典型集合构成一个软件开发项目。但是,文件夹集合可用于正在为其开发软件代码的任何其他内容。

VS Code处理工作区背后的机制有些复杂。我认为传达我所学知识的最快方法是为您提供一组说明,您可以使用它们来了解工作区如何在计算机上工作。 我假设您是从全新安装VS Code v1.25.1开始的。如果您使用的是VS Code的生产版本,则不建议您遵循我的说明,因为您可能会丢失一些或全部现有的VS Code配置! 如果您已经安装了TEST版本的VS Code v1.25.1,并且愿意丢失任何已存在的配置,则必须执行以下操作才能将VS Code还原到全新的安装状态:

删除以下文件夹(如果存在):

  C:\Users\%username%\AppData\Roaming\Code\Workspaces (where "%username%" is the name of the currently logged-on user)
Run Code Online (Sandbox Code Playgroud)

您将向VS Code添加文件夹以创建新的工作区。如果VS Code以前曾使用过您打算用来创建此新工作区的任何文件夹,请删除将用于创建新工作区的每个文件夹中的“ .vscode”子文件夹(如果存在)。

启动VS Code。如果显示“欢迎”页面,请关闭它。如果显示面板(水平窗格),请执行相同的操作。如果收到未安装Git的消息,请单击“稍后提醒我”。如果显示,还请关闭作为默认代码页启动的“无标题”代码页。如果未显示资源管理器窗格,请在主菜单上单击“查看”,然后单击“资源管理器”以显示资源管理器窗格。在“资源管理器”窗格中,您应该看到三(3)个视图标题-“打开编辑器”,“未打开文件夹”和“大纲”(位于“资源管理器”窗格的最底部)。确保至少显示打开的编辑器和没有打开文件夹的视图头。

VS Code显示一个显示“打开文件夹”的按钮。单击此按钮,然后选择一个文件夹。VS Code将刷新,并且所选文件夹的名称将替换为“未打开文件夹”视图的名称。所选文件夹中存在的所有文件夹和文件将显示在“视图”名称下方。

现在打开“ VS Code首选项设置”文件。有很多方法可以做到这一点。我将最容易记住的是文件>首选项>设置。设置文件显示在两列中。左列是每个VS Code功能的默认值的只读列表。右列用于列出三(3)种用户设置。此时,在测试中,仅列出了两个用户设置-用户设置和工作区设置。默认情况下显示用户设置。这将显示用户设置.json文件的内容。要查找此文件的位置,只需将鼠标悬停在资源管理器中“打开编辑器”视图下显示的“用户设置”列表上。当“用户设置”出现时,会自动选择“打开编辑器”视图中的此列表 选择右列中的选项。路径应为:

C:\Users\%username%\AppData\Roaming\Code\User\settings.json
Run Code Online (Sandbox Code Playgroud)

此settings.json文件是存储VS Code的用户设置的位置。

现在,单击“首选项”列表右列中的“工作区设置”选项。执行此操作时,会在您几步前添加到“探索”中的文件夹中自动创建一个名为“ .vscode”的子文件夹。在资源管理器中查看文件夹列表,以确认已添加.vscode子文件夹。在新的.vscode子文件夹内是另一个settings.json文件。该文件包含您在几步前添加到资源管理器中的文件夹的工作区设置

此时,您有一个文件夹,其用户设置存储在:

C:\Users\%username%\AppData\Roaming\Code\User\settings.json
Run Code Online (Sandbox Code Playgroud)

并且其工作区设置存储在:

C:\TheLocationOfYourFolder\settings.json
Run Code Online (Sandbox Code Playgroud)

将单个文件夹添加到新安装的VS Code中时的配置。当我们添加第二个(或更大)文件夹时,事情变得一团糟。那是因为我们正在更改VS Code的用户设置和工作区设置,以容纳多个文件夹。在单文件夹环境中,只需要上面列出的两个settings.json文件。 但是在多文件夹环境中,会在添加到资源管理器的每个文件夹中创建一个.vscode子文件夹,并创建一个新文件“ workspaces.json”来管理多文件夹环境。 在以下位置创建新的“ workspaces.json”文件:

c:\Users\%username%\AppData\Roaming\Code\Workspaces\%workspace_id%\workspaces.json
Run Code Online (Sandbox Code Playgroud)

“%workspaces_id%”是具有唯一全数字名称的文件夹。

现在,在“首选项”右栏中,出现三个用户设置选项-用户设置,工作区设置和文件夹设置。用户设置的功能与单文件夹环境相同。但是,“工作区设置”后面的设置文件已从单个文件夹的.vscode子文件夹中的settings.json文件更改为位于上面显示的workspaces.json文件路径中的workspaces.json文件。 现在,由第三个用户设置“文件夹选项”控制每个文件夹的.vscode子文件夹中的settings.json文件。 这是一个下拉选择列表,用于管理位于每个文件夹的.vscode子文件夹中的每个文件夹的settings.json文件。请注意:除非在文件夹选项用户设置中至少一次选择了新的文件夹,否则不会在新的浏览器文件夹中创建.vscode SUBFOLDER。

请注意,Explorer的单个文件夹名称已更改为“ UNTITLED(WORKSPACE)”。这表示以下内容:

  1. 已创建一个名为“ UNTITLED(WORKSPACE)”的多文件夹工作区。
  2. 该工作空间被命名为“ UNTITLED(WORKSPACE)”,以表明该工作空间尚未保存为单独的唯一工作空间文件
  3. UNTITLED(WORKSPACE)工作区可以添加或删除文件夹,但是它将用作VS Code的唯一工作区环境

VS Code工作空间的全部功能只有在将工作空间另存为可根据需要重新加载的文件时才能实现。这提供了创建独特的多文件夹工作区(例如,项目)并将其保存为文件供以后使用的功能!为此,从主菜单中选择文件>将工作空间另存为,然后将当前工作空间配置另存为唯一的工作空间文件。如果需要“从头开始”创建工作区,请首先保存当前的工作区配置(如果需要),然后右键单击每个Explorer文件夹名称,然后单击“从工作区删除文件夹”。从工作空间中删除所有文件夹后,添加新工作空间所需的文件夹。完成添加新文件夹后,只需将新工作空间另存为新工作空间文件。

重要说明 -当“浏览器”中仅保留一个文件夹或在创建新工作区时已从资源管理器中删除了所有文件夹时,VS Code不会“还原”为单文件夹模式。利用三个用户首选项的多文件夹工作区配置仍然有效。这意味着,除非您按照本文开头的说明进行操作,否则VS Code将永远无法返回到单文件夹操作模式-它始终保持在多文件夹工作区模式下。