VS Code中的“工作区”是什么?

时间:2017-06-19 11:53:37

标签: visual-studio-code

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

例如,VS Code谈论applying settings at the user level vs the workspace level

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

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

17 个答案:

答案 0 :(得分:91)

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

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

答案 1 :(得分:64)

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

从一个"项目开始"文件夹中。

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

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

的文件夹中

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

现在找到你的工作区"文件"然后双击它。这将使用您在工作区中创建的文件夹打开VS Code。或者您可以打开VS代码并使用"打开工作区"。

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

答案 2 :(得分:49)

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使用该文件中的所有设置。实例。

打开多根工作区时,行为会有所不同。首先,工作空间设置标签显示了.code-workspace文件中设置的选项。其次,任何带有settings.json文件的文件夹都将出现在新的文件夹设置标签下。请注意,在多根工作区中时,每个文件夹的settings.json中仅使用有限数量的设置。建议您打开上面的链接以进一步阅读。

答案 3 :(得分:11)

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

post '/profile/:id/add_positive', to: 'users#add_positive'
post '/profile/:id/add_negative', to: 'users#add_negative'

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

您可以了解更多here

答案 4 :(得分:9)

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

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

答案 5 :(得分:5)

我刚刚安装了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配置!已安装25.1,并且您愿意丢失任何已存在的配置,必须执行以下操作才能将VS代码恢复为全新的安装状态:

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

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

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

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

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

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

C:\Users\%username%\AppData\Roaming\Code\User\settings.json

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

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

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

C:\Users\%username%\AppData\Roaming\Code\User\settings.json

及其工作区设置存储在:

C:\TheLocationOfYourFolder\settings.json

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

c:\Users\%username%\AppData\Roaming\Code\Workspaces\%workspace_id%\workspaces.json

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

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

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

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

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

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

答案 6 :(得分:5)

因此,再次忽略了不使用与项目无关的工件污染项目的源树的教训。

对于Visual Studio Code工作区文件(workspaces.json)或目录(.vscode)或放置在源树中的任何内容,都有原因。只需将其放置在用户设置下即可。

我以为我们在20年前就已经知道了这一点,但似乎有些教训注定要重复。

答案 7 :(得分:2)

他们称之为multi-root workspace,你可以轻松地调试b / c

  

"对于多根工作空间,VS Code会搜索所有文件夹   launch.json调试配置文件并显示它们   文件夹名称作为后缀。"

假设您的app文件夹中有服务器和客户端文件夹,如果要一起调试它们,没有工作区,则必须启动2个vscode,一个用于服务器,一个用于客户端,并且需要来回切换。

但是现在(1.24)您无法将单个文件添加到仅限工作区的文件夹中,这有点inconvenient

答案 8 :(得分:1)

截至2018年5月,似乎VS Code中的工作区允许您快速访问不同但相关的项目。所有这些都无需打开不同的文件夹。 而且您也可以拥有多个工作区。 请参阅此处的参考资料,您将全面了解它:
reference 1
reference 2

答案 9 :(得分:1)

2021 年 2 月刚刚添加了有关“什么是 VS Code '工作区'”的文档:workspaces

<块引用>

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

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

配置仅适用于特定文件夹或文件夹的设置,但 不是别人。持久化任务和调试器启动配置 仅在该工作区的上下文中有效。存储和恢复 UI 与该工作区关联的状态(例如, 打开)。仅为此选择性地启用或禁用扩展 工作区。您可能会看到使用的术语“文件夹”和“工作区” 在 VS Code 文档、问题和社区中可互换 讨论。将工作区视为项目的根 额外的 VS Code 知识和功能。

  • 注意:也可以在没有工作区的情况下打开 VS Code。例如,当您通过从 您平台的文件菜单,您将不在工作区中。在这 模式,一些 VS Code 的功能减少了,但你仍然可以 打开文本文件并对其进行编辑。

<块引用>

单文件夹工作区

您无需为文件夹做任何事情即可成为 VS Code 工作区而不是使用 VS Code 打开文件夹。一旦文件夹有 被打开后,VS Code 会自动跟踪诸如 您打开的文件和编辑器布局,因此编辑器将与您离开时一样 当您重新打开该文件夹时。您还可以添加其他文件夹特定的 配置,例如工作区特定的设置(相对于全局用户 设置)和任务定义和调试启动文件(见下文 工作区设置部分)。

多根工作区

Multi-root workspaces 是 VS Code 的一项高级功能,它允许 您将多个不同的文件夹配置为 工作区。您将打开一个文件夹,而不是打开一个文件夹作为工作区 .code-workspace JSON 文件,其中列出了 工作区。例如:

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

multi-root workspace folders

<块引用>

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

  • 注意:打开文件夹与打开 .code-workspace 文件的视觉差异可能很微妙。给你一个提示 .code-workspace 文件已打开,用户界面的某些区域 (例如,文件资源管理器的根目录)显示一个额外的(工作区) 名称旁边的后缀。

第一个链接还有更多内容。

答案 10 :(得分:1)

  1. 打开文件菜单并选择 Save Workspace As,这将保存当前资源管理器状态。
  2. 之后,您可以选择文件->Open Workspace 在保存工作区之前打开。

答案 11 :(得分:0)

如果Visual Studio Code是全新安装;

  1. 单击扩展,搜索“ python”,然后单击安装

  2. 单击视图->资源管理器 如果没有文件夹,则向工作区中添加一个文件夹(“文件”->“向工作区中添加文件夹”)

  3. 如果要使用虚拟python环境,请单击文件->首选项->设置

单击窗口右上角的“ {}打开设置JSON”,然后将路径添加到虚拟环境中的python.exe文件

{
    "python.pythonPath": "C:\\PathTo\\VirtualENV\\python.exe"
}
  1. 启动新终端并检查是否选择了正确的python解释器

答案 12 :(得分:0)

工作区,在我看来,每个人都忘记提及的东西,它是一种创建区域的方式,其中包含处理单一语言所需的所有工具,就像其他人所说的那样,在一个项目中,您可能拥有 PHP、Phyton、JavaScript,节点等

为每种特定语言创建一个工作区,您可以获得用于管理、调试、测试的所有工具,例如您的所有 JavaScript。

这更易于管理,因此您可以拥有一个用于 PHP 的工作区,另一个用于 Node 的工作区,......以及一个在多个工作区中具有文件夹的项目。

希望我有所帮助!

答案 13 :(得分:0)

是否需要为测试项目或要添加到主项目的功能建立新目录并打开新的Visual Studio Code窗口?确定,因此您需要一个工作空间和足够的CPU高使用率...

除了所有其他答案外,我只想提及Visual Studio Code中工作区的常见用法。

答案 14 :(得分:0)

什么是工作区?

.code-workspace文件定义的VSCode项目(该文件的语言为JSON with Comments)。 This file stores各种数据,包括:

我需要一个工作区吗?

工作空间唯一有用的时间是您要创建multi-root project。在多根工作区中,您只有一个.code-workspace文件,该文件可打开要在explorer中显示的所有根文件夹(也就是说,您无需继续打开多个文件夹手动)。每次您打开该工作区文件时,都将还原要应用于该工作区的所有VSCode设置/配置。

单个文件夹项目如何?

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

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

如何创建工作区?

转到File > Save Workspace As...

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

转到File > Add Folder to Workspace...

如何打开工作区?

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

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

转到File > Open...并选择目标.code-workspace文件。或者,打开工作区,然后打开command palette,搜索并选择Workspaces: Open Workspace Configuration File命令。

为什么工作区如此混乱?

VSCode不在整个UI中始终使用该术语,这似乎是一个疏忽。一个很好的例子是recent files widget。请注意,文件夹和多根工作区被分组在相同的“工作区”标题下,这表明所有内容都存在一个工作区。但是,然后为工作区文件指定了“工作区”前缀,这与标题相反,并表明只有那些文件实际上是工作区。

我已经打开GitHub issue来解决其中一些不一致之处。

答案 15 :(得分:0)

尽管问题在问“什么是工作空间?”,但我感到困惑的根源在于期望工作空间在其他编辑器中的行为应更像“项目”。

因此,由于这种困惑,我想帮助所有登陆这里的人,我想发布以下VS Code插件(不是我的插件)“项目经理”:https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager

它具有用于管理(保存和打开)单文件夹项目的漂亮UI:

保存项目:

enter image description here

使用调板打开项目:

enter image description here

在状态栏中查看当前项目(单击以打开项目面板):

enter image description here

访问侧栏中的项目:

enter image description here

答案 16 :(得分:-1)

这是了解工作区的必读

正如许多人指出的那样,多根工作区是 VS Code 工作区概念变得相关的地方。

但是为什么是另一个问题。

这里是 Eclipse IDE 用户指南的摘录,其中包含正确的工作区概念(与 VS Code 完全不同,如果您需要 VS Code,则不应切换到 Eclipse - 但您可以阅读文档,因为他们解释正确)

<块引用>

在 Eclipse 中使用 Git 存储库的注意事项

小故事

在使用 EGit 设置 Git 存储库时,对于创建“生产性”(相对于“游乐场”)存储库有两个建议:

  • 不要在 Eclipse 工作区中创建存储库。
    • 克隆或创建存储库时要小心。
    • 确保正确使用 Git 共享向导。
  • 不要使用 Eclipse 项目作为 root 创建存储库。
    • 确保正确使用 Git 共享向导。

在克隆或创建存储库期间指定工作区文件夹时会发生第一个错误。

当您在工作区中手动创建的 Eclipse 项目中使用 Git 共享向导时,如果不采取预防措施(该向导已在最新版本中修复),则会发生这两种错误。

您会在下面找到这些建议的一些动机。

更长的故事

Eclipse 工作区和存储库工作目录 可以通过不同方式创建 Git 存储库,例如通过从现有存储库克隆、从头开始创建或使用 EGit 共享向导。

在任何情况下(除非您创建“裸”存储库,但此处未讨论),新存储库本质上是本地硬盘上的文件夹,其中包含“工作目录”和元数据文件夹。元数据文件夹是一个名为“.git”的专用子文件夹,通常称为“.git-folder”。它包含实际的存储库(即提交、引用、日志等)。

元数据文件夹对 Git 客户端完全透明,而工作目录用于将当前检出的 Repository 内容公开为工具和编辑器的文件。

通常,如果要在 Eclipse 中使用这些文件,则必须以一种或另一种方式将它们导入 Eclipse 工作区。为此,最简单的方法是签入 .project 文件,“导入现有项目”向导可以从中轻松创建项目。 [...]

含义

以上含义如下:

将项目作为存储库的根文件夹可能不是一个好主意。 原因是您将永远无法向此 Repository 添加另一个项目,因为 .project 文件将占用根文件夹;您仍然可以将项目添加为子文件夹,但众所周知,这种项目嵌套会导致很多问题。为了添加另一个项目,您必须先将该项目移动到存储库中的一个子文件夹,然后将第二个项目添加为另一个子文件夹,然后才能提交此更改。

最好将您的存储库放在 Eclipse 工作区之外。 这有几个原因:

新的 Repository 会将 Eclipse 工作区的完整文件夹结构视为(潜在)内容。这可能会导致性能问题,例如在提交之前计算更改时(例如,将扫描完整的 .metadata 文件夹);通常情况下,工作区将包含死文件夹(例如已删除的项目),这些文件夹在语义上与 EGit 无关,但不能轻易排除。

元数据 (.git-) 文件夹将是 Eclipse 工作区的子项。目前尚不清楚这是否会导致 Eclipse 进行不必要的文件夹遍历。

您可以通过销毁 Eclipse 工作区轻松销毁您的存储库。

话虽如此,Visual Studio 也做对了;为什么 Microsoft(r) 决定忽略 VS Code 中的解决方案(.sln)和项目(.vcxproj)概念相当有趣。