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


554

我不太相信自己在问这个问题,但是我无法在文档中找到定义。如果不是很明显,我是Visual Studio Code的新手。

例如,Visual Studio Code讨论了在用户级别和工作空间级别应用设置

一方面,

  • (a)它可能指向您已打开的项目目录;要么
  • (b)它可能是指您在特定窗口中打开的所有内容。

上面引用的页面说

"Workspace: These settings are stored inside your workspace
in a .vscode folder and only apply when the workspace is opened."

28
我仍然觉得这个问题还有更多。我是VS Code的新手,但不是编码专家。正如OP所建议的,我认为工作空间“仅”是项目目录。但是,如果选择File --> Open Workspace,文件浏览器对话框不允许我简单地“打开”文件夹,则必须查找特定文件。:(
威廉姆森

26
我有一个相同的问题...我对VS已有2周的时间,我绝对喜欢它,但仍然没有完全了解Workspaces是什么,我认为这表明很多人似乎都知道题。需要明确的术语。
ynamite

2
我和你们在一起。我不清楚普通文件夹结构和工作区之间的区别。我已经使用VS Code创建了一个工作区,但是除了不同的文件图标之外,没有任何区别。我知道工作空间是不同分支的本地副本,但是单独更改的标准文件夹不能做同样的事情吗?我想要有关此文档,因为很难找到。
丹尼尔·杰克逊

2
看来每个窗口只能打开一个工作区。
保罗·普赖斯

2
我想知道如何创建一个新的空工作区。我可以打开并保存现有的工作区,但不能关闭以开始一个空的工作区,这
有点奇怪

Answers:


255

什么是工作区?

由一个或多个根文件夹以及该项目的所有Visual Studio Code配置组成的项目。“根文件夹”是文件系统的顶级目录。这些配置包括以下数据:

为什么工作区如此混乱?

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

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

什么是.code-workspace文件?

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

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

我需要.code-workspace文件吗?

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

单文件夹项目呢?

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

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

如何创建.code-workspace文件?

转到菜单文件将工作区另存为...

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

进入菜单文件文件夹添加到工作区...

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

双击.code-workspace文件。Visual Studio Code无法打开实际文件。相反,它将读取该文件并打开属于该工作区的文件夹。另外,进入菜单文件打开工作区...

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

转到菜单文件打开...,然后选择目标.code-workspace文件。或者,打开与该文件关联的工作区,然后打开命令选项板,搜索并选择“ 工作区:打开工作区配置文件”命令。


19
谢谢@jabacchetta。我两年前问过这个问题。不久之后,我认为WS的定义实际上发生了变化,因此这一直是一个僵尸问题。但是由于人们的困惑,我得到了很多SO代表。我不得不承认,观看要点很高兴,我也没有动力去进行讨论。但是您的答案是如此完整和清晰,并且您已经提出了一个问题,以使代码人员可以解决这种混乱。我觉得不接受这个答案会很不友善。谢谢!
Nat Kuhn

我认为这里的评论是最好的地方。这让我在意识到一个关于选择正确的Python解释器的问题后,自己清除了一些东西(stackoverflow.com/questions/54106071/…),但是现在我有vs代码抱怨说在launch.json中是“ args”不允许使用该属性,这些文件是自动生成的,并且我找不到该对象的课程
提要

在Linux中保存“工作区”时,请不要忘记将.code-workspace扩展名添加到工作区的名称中。例如[myworkspace.code-workspace]我一直不得不重新创建工作区,因为“打开”看不到任何工作区文件。(也许,如果没有扩展设置上保存的东西推荐/拉请求自动填充...)
JI-网

1
您可能会.code-workspace为单个根文件夹创建文件的一个原因是,某些设置(例如files.associations)在VSCode中不会使用.vscode/settings.json,而在显式工作空间中会使用。
卡尔·梅耶

133

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

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


我认为自从提出问题以来,定义可能已经发生了变化,但是我感谢您的回答,我接受了!
Nat Kuhn,

1
我是VS Code的新手,但是我看不到一种可以在每个项目中打开一个工作区的方法。如果我打开一个新文件并尝试保存一个新的工作区,那么我将移动现有的工作区文件。所以我认为工作空间==项目是不正确的。
–Åsmund,

8
“您可以在工作空间级别保存设置,并且可以在一个工作空间中打开多个文件夹。如果要执行上述任一操作,请使用工作空间。” 从技术上讲,您不需要工作空间即可在文件夹级别保存设置。只需settings.json在相关文件夹中的.vscode文件夹中完成即可。但是,如果要在一个工作空间中使用多个文件夹,并且要应用所有设置,则必须使用一个工作空间。
甘道夫·萨克斯

2
对我来说,这听起来有点像Visual Studio中的解决方案
Alexander Derck

2
当OP没有提供“工作区”的定义时,这是如何被接受的答案?
Iliyan Georgiev,

83

工作区只是一个扩展名为(.code-workspace)的文本文件。您可以通过使用文本编辑器打开它来查看它。我也对工作区的想法以及如何在Visual Studio Code中实现它感到沮丧。我找到了适合自己的方法。

从单个“项目”文件夹开始。

打开Visual Studio代码,然后关闭所有打开的工作区或文件或文件夹。您应该在EXPLORER中仅看到“ OPEN EDITORS”和“ NO FOLDER OPENED”。

从菜单栏中*→ 文件打开文件夹...。导航到要放置文件夹的位置,然后右键单击以打开一个新文件夹。将其命名为任意名称,然后单击“选择文件夹”。它将显示在* Visual Studio Code资源管理器中。

现在从菜单文件保存工作区为...。命名工作区,然后将其保存在要保留所有工作区的任何位置(不一定是项目文件夹所在的位置)。我把所有的东西都放在一个名为“ Visual Studio Code工作区”的文件夹中。

它将被保存为(.code-workspace)文件,并且仅是其包含(或指向)硬盘上所有文件和文件夹的索引。您可以通过使用文本编辑器打开它来查看它。关闭您创建的文件夹,然后关闭Visual Studio代码。

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

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


我仍然不确定这是MS打算使用的“最佳”或“适当”方法,但是a)应该记录在案,b)您应该加入Mensa,因为它能够找出可行的方法,并且似乎是合乎逻辑的。由于PHPStorm的巨大尺寸,我从PHPStorm转到VS Code,但是对于如此轻量级且乍一看似乎很棒的IDE,我现在对这个令人难以置信的UX噩梦完全感到困惑!无论如何TYVM的建议和道歉:-)
Kenny83 '18

等一下,您是说工作区文件不必与(可能是)关联的项目文件夹位于同一文件夹中吗?那被认为是一种好习惯吗?我正在想象,例如,可以创建一个工作空间文件,该文件由从事同一项目的所有工程师共享(以允许共享样式等),然后用户设置可以根据需要单独覆盖。为了使它可行,似乎工作空间文件应该在同一项目文件夹中,对吗?我想我有两个问题:(1)什么是可行/允许的?以及(2)什么是最佳实践?
迈克·威廉姆森

这将给同时从事多个项目的人们带来麻烦。
Shahir Ansari

61

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。我建议您打开上面的链接以进一步阅读。


是否有任何的文件指定位置settings.json比其他%APPDATA%\Code\User?就我而言,当我将该文件放到文件夹中时,某些设置不会像文件中的“默认”位置那样应用%APPDATA%
Danijel '18

1
据我所知,没有。该文档将Windows的“默认”位置描述为%APPDATA%\Code\User。我还没有发现任何暗示该%APPDATA%位置本身已被使用的信息。code.visualstudio.com/docs/getstarted/...
查理Joynt

1
还有另外一个问题在这里SO关于改变用户设置地点的位置,一个答案表明,你需要重写的命令行参数的默认位置:stackoverflow.com/questions/44575312/...
查理Joynt

查理,如果没有文档,您的答案基于什么?源代码?
Danijel

我的答案基于可用的文档和最终用户的经验。我看不到有关能够指定用户配置文件(默认)位置的文档;换句话说,我找不到任何表明%APPDATA%自己是有效位置的信息。听起来您的测试表明该文件夹中的文件正常工作?
查理·乔伊特

22

工作空间的主要用途(也许是唯一的用途)是允许添加多个独立的文件夹来构成一个项目。例如:

- WorkspaceProjectX  
-- ApiFolder   (maybe /usr/share/www/api)  
-- DocsFolder  (maybe /home/user/projx/html/docs)  
-- WebFolder   (maybe /usr/share/www/web)

因此,您可以将它们分组在特定项目的工作空间中,而不必打开多个文件夹窗口。

您可以在此处了解更多信息


2
这是一个很大的区别。我已经通过使用.sln文件打开一个文件夹来引用多个项目的单文件夹工作区,该文件夹引用包含项目的子目录。但是它们都与解决方案所维护的依赖项层次结构相关。多根工作区将没有这种关系。
梅尔斯顿

2
这是最好的答案,因为它解决了“为什么”使用工作空间的问题。您可以在工作空间的机制周围找到各种各样的技术定义,但是很难理解为什么要使用它。该工作区类似于Visual Studio Professional中的“解决方案”。
FrankO

1
很好。这就是我想要的。
Peter Mortensen

9

经过一些调查,答案似乎是(a)。

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


2
它不仅是1个文件夹。您可以将工作空间配置为包含多个目录。我想知道的是工作台和工作区之间有什么区别。
Marses

7

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C:\TheLocationOfYourFolder\settings.json

将单个文件夹添加到Visual Studio Code的新安装中时的配置。当我们添加第二个(或更大)文件夹时,事情变得一团糟。那是因为我们正在更改Visual Studio 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文件由第三个用户设置“文件夹选项”控制。 这是一个下拉选择列表,用于管理位于每个文件夹的.vscode子文件夹中的每个文件夹的settings.json文件。请注意:.vscode子文件夹将不会在新添加的资源管理器文件夹中创建,直到在文件夹选项用户设置中至少一次选择了新添加的文件夹为止。

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

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

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

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


对我来说,直到我对其中一个“工作场所设置”进行了更改之后,才创建了.vscode文件夹,但是对于其他人,此文章肯定有助于我更好地了解它们的工作方式。
James Toomey

2

他们称其为“ 多根”工作空间,您可以轻松地进行调试,因为:

“对于多根工作区,Visual Studio Code在所有文件夹中搜索launch.json调试配置文件,并以文件夹名称作为后缀显示它们。”

假设您的应用程序文件夹中有一个服务器和一个客户端文件夹。如果要一起调试它们,而没有工作区,则必须启动两个Visual Studio Code实例,一个用于服务器,一个用于客户端,并且需要来回切换。

但是现在(1.24)您不能将单个文件添加到工作区中,只能添加文件夹,这有点不方便


2

因此,再次忽略了不使用与项目没有直接关系的工件污染项目源代码树的教训。

原因为Visual Studio代码工作区文件(workspaces.json)或目录(.vscode)或任何放置在源代码树。可以很容易地将其放置在用户设置下。

我以为大约20年前我们就已经弄清楚了,但是似乎有些教训注定要重演。


git和subversion之类的源代码控制系统是该规则的唯一例外。而且,即使他们稍加考虑,也可以解决该问题。
Smit-Tay

实际上,它似乎还有一些被称为“便携模式” code.visualstudio.com/docs/editor/portable 目前还不清楚,如果排除了所有的源生成的文件。
Smit-Tay

1

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

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

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

保存项目:

在此处输入图片说明

使用面板打开项目:

在此处输入图片说明

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

在此处输入图片说明

在侧边栏中访问项目:

在此处输入图片说明


1

截至2018年5月,似乎Visual Studio Code中的工作区使您可以快速访问不同但相关的项目。全部无需打开其他文件夹。

您也可以有多个工作区。请参阅此处的参考资料,您将获得完整的图片:

参考1
参考2


0

如果Visual Studio Code是全新安装;

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

  2. 单击视图->资源管理器如果没有文件夹,则将文件夹添加到工作区(文件->将文件夹添加到工作区)

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

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

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

0

您是否曾经为测试项目或要添加到主项目的功能建立新目录并打开新的Visual Studio Code窗口?好的,所以您需要一个工作区和足够的CPU高使用率...

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.