多根工作區 (Multi-root Workspaces)
您可以透過 Visual Studio Code 的多根工作區功能,同時處理多個專案資料夾。當您同時處理幾個相關的專案時,這非常有幫助。例如,您可能有一個包含產品文件的儲存庫,並希望在更新產品原始碼時同時保持文件為最新狀態。

注意:如果您想深入了解 VS Code 的「工作區」概念,可以參閱 什麼是 VS Code「工作區」?。除非您明確建立多根工作區,否則「工作區」僅代表您專案的單一根資料夾。
新增資料夾
您可以輕鬆地將其他資料夾新增至現有的工作區。有幾種新增資料夾的操作方式:
將資料夾新增至工作區
檔案 > 將資料夾新增至工作區 (Add Folder to Workspace) 指令會開啟一個「開啟資料夾」對話方塊,讓您選擇新的資料夾。

一旦新增了根資料夾,檔案總管將會顯示該新資料夾作為檔案總管中的一個根目錄。您可以右鍵點擊任何根資料夾,並使用內容選單來新增或移除資料夾。

檔案總管應能像以前一樣運作。您可以在根資料夾之間移動檔案,並使用內容選單和檔案總管檢視中提供的任何常見檔案操作功能。
若已進行設定,則每個根資料夾都支援如 files.exclude 這類的設定;若設為全域使用者設定,則適用於所有資料夾。
拖放操作
您可以使用拖放操作將資料夾新增至工作區。將資料夾拖曳至檔案總管即可將其新增至目前的工作區。您甚至可以選取並拖曳多個資料夾。
注意:將單一資料夾拖放至 VS Code 的編輯器區域仍會以單一資料夾模式開啟該資料夾。如果您將多個資料夾拖放至編輯器區域,則會建立一個新的多根工作區。
您也可以使用拖放操作來重新排序工作區中的資料夾。
原生檔案開啟對話方塊的多重選取
使用您平台原生檔案開啟對話方塊來開啟多個資料夾時,將會建立一個多根工作區。
命令列 --add
將一個或多個資料夾新增至最後一個作用中的 VS Code 執行個體,以進行多根工作區操作。
code --add vscode vscode-docs
移除資料夾
您可以使用內容選單中的 從工作區移除資料夾 (Remove Folder from Workspace) 指令來從工作區移除資料夾。
工作區檔案
當您新增多個資料夾時,它們最初會放置在標題為 未命名的工作區 (UNTITLED WORKSPACE) 的工作區中,該名稱會一直保留直到您儲存工作區為止。除非您希望將工作區儲存在永久位置(例如您的桌面),否則不需要儲存它。只要使用它們的 VS Code 執行個體保持開啟,未命名的工作區就會存在。一旦您完全關閉了帶有未命名工作區的執行個體,如果您打算將來再次開啟它,系統將會提示您儲存它。

當您儲存工作區時,它會建立一個 .code-workspace 檔案,且檔案名稱將會顯示在檔案總管中。
工作區另存為...
如果您想將工作區檔案移動到新的位置,可以使用 檔案 > 工作區另存為... 指令,這會自動設定相對於新工作區檔案位置的正確資料夾路徑。
開啟工作區檔案
若要重新開啟工作區,您可以:
- 在您平台的檔案總管中按兩下
.code-workspace檔案。 - 使用 檔案 > 開啟工作區 指令並選取該工作區檔案。
- 從 檔案 > 開啟最近使用的檔案 (⌃R (Windows, Linux Ctrl+R)) 清單中選取該工作區。
- 工作區具有 (工作區) 字尾,以區別於一般的資料夾。

就像在 VS Code 中開啟單一資料夾時會有 關閉資料夾 一樣,這裡有一個 關閉工作區 (⌘K F (Windows, Linux Ctrl+K F)) 指令可用於關閉作用中的工作區。
工作區檔案結構 (Schema)
.code-workspace 的結構相當直觀。您擁有一個包含絕對路徑或相對路徑的資料夾陣列。當您想要共用工作區檔案時,使用相對路徑會更好。
您可以使用 name 屬性來覆寫資料夾的顯示名稱,為檔案總管中的資料夾提供更有意義的名稱。例如,您可以將專案資料夾命名為「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"
}
]
}
這將產生以下檔案總管顯示結果:

正如您從上面的範例中所見,您可以在工作區檔案中新增註解。
工作區檔案也可以在 settings 下包含工作區 全域設定,並在 extensions 下包含 延伸模組建議,我們將在下方討論。

一般 UI
編輯器
當您使用多根工作區時,VS Code 的使用者介面僅有一些細微的變化,主要目的是釐清不同資料夾之間的檔案歧義。例如,如果多個資料夾中的檔案名稱衝突,VS Code 會在索引標籤標題中包含資料夾名稱。

如果您希望始終在索引標籤標題中顯示資料夾,可以使用 workbench.editor.labelFormat 設定,並將其值設為 "medium" 或 "long" 以顯示資料夾或完整路徑。
"workbench.editor.labelFormat": "medium"
VS Code 使用者介面(例如 開啟的編輯器 和 快速開啟 (⌘P (Windows, Linux Ctrl+P)) 清單)會包含資料夾名稱。

如果您正在使用 檔案圖示佈景主題 且該主動式主題支援此功能,您將會看到一個特殊的工作區圖示。
在下方您可以看到內建 Minimal (Visual Studio Code) 檔案圖示佈景主題中的工作區圖示。
![]()
搜尋 (Search)
像全域搜尋這類的 VS Code 功能適用於所有資料夾,並會按資料夾對搜尋結果進行分組。

當開啟多根工作區時,您可以透過在 包含的檔案 (files to include) 方塊中使用 ./ 語法,選擇在單一根資料夾中進行搜尋。例如,如果您輸入 ./project1/**/*.txt,它將會搜尋 project1/ 根資料夾下的所有 .txt 檔案。
設定
在一個工作區擁有多個根資料夾的情況下,每個根資料夾中都可能存在一個 .vscode 資料夾,用於定義該資料夾適用的設定。為了避免設定衝突,使用多根工作區時僅套用資源(檔案、資料夾)設定。影響整個編輯器的設定(例如 UI 配置)將會被忽略。例如,兩個專案不能同時設定縮放比例 (zoom level)。
與單一資料夾專案一樣,系統支援使用者設定;您也可以設定全域工作區設定,這些設定將套用於多根工作區中的所有資料夾。全域工作區設定將儲存在您的 .code-workspace 檔案中。
{
"folders": [
{
"path": "vscode"
},
{
"path": "vscode-docs"
},
{
"path": "vscode-generator-code"
}
],
"settings": {
"window.zoomLevel": 1,
"files.autoSave": "afterDelay"
}
}
當您從單一資料夾執行個體轉移到多資料夾時,VS Code 會將來自第一個資料夾且適用的編輯器全域設定,加入到新的全域工作區設定中。
您可以透過設定編輯器輕鬆檢視和修改不同的設定檔案。設定編輯器的索引標籤讓您可以選擇「使用者」設定、「全域工作區」設定以及個別「資料夾」設定。

您也可以透過指令開啟特定的設定檔案:
- 喜好設定:開啟使用者設定 - 開啟您的全域使用者設定。
- 喜好設定:開啟工作區設定 - 開啟您工作區檔案的設定區段。
- 喜好設定:開啟資料夾設定 - 開啟作用中資料夾的設定。
全域工作區設定會覆寫使用者設定,而資料夾設定可以覆寫工作區或使用者設定。
不支援的資料夾設定
不支援的編輯器全域資料夾設定會在您的資料夾設定中以灰色顯示,並從 預設資料夾設定 清單中過濾掉。您還會在該設定前面看到一個資訊圖示。

偵錯
透過多根工作區,VS Code 會在所有資料夾中搜尋 launch.json 除錯設定檔,並以資料夾名稱作為字尾顯示它們。此外,VS Code 還會顯示工作區設定檔中定義的啟動設定。

上面的範例顯示了 TSLint 延伸模組 的除錯設定。有一個來自 tslint 延伸模組資料夾的 launch 設定,用於啟動在 VS Code 延伸模組主機 (Extension Host) 中執行的延伸模組,以及來自 tslint-server 資料夾的 attach 設定,用於將除錯器附加到正在執行的 TSLint 伺服器。
您也可以在 vscode-tslint 工作區中看到針對 tslint、tslint-server 和 tslint-tests 資料夾的三個 新增設定 指令。新增設定 指令將開啟資料夾的 .vscode 子資料夾中現有的 launch.json 檔案,或建立一個新檔案並顯示除錯設定範本下拉式選單。

設定中使用的變數(例如 ${workspaceFolder} 或現已棄用的 ${workspaceRoot})會相對於它們所屬的資料夾進行解析。您可以透過在變數後附加根資料夾名稱(以冒號分隔)來對每個工作區資料夾設定變數範圍。
工作區啟動設定
工作區範圍的啟動設定位於工作區設定檔的 "launch" 區段中(透過指令選擇區中的 工作區:開啟工作區設定檔)。

或者,可以透過啟動設定下拉式選單中的「新增設定 (工作區)」項目來新增啟動設定。

複合式 (compound) 啟動設定可以按名稱參照個別的啟動設定,只要這些名稱在工作區內是唯一的,例如:
"compounds": [{
"name": "Launch Server & Client",
"configurations": [
"Launch Server",
"Launch Client"
]
}]
如果個別的啟動設定名稱不唯一,則可以使用更詳細的 "folder" 語法來指定符合資格的資料夾。
"compounds": [{
"name": "Launch Server & Client",
"configurations": [
"Launch Server",
{
"folder": "Web Client",
"name": "Launch Client"
},
{
"folder": "Desktop Client",
"name": "Launch Client"
}
]
}]
除了 compounds 之外,工作區設定檔的 launch 區段也可以包含一般的啟動設定。請確保所有使用的變數都明確地限定在特定資料夾中,否則它們對工作區而言無效。您可以在 變數參考 中找到關於明確限定範圍變數的更多詳細資訊。
以下是一個啟動設定範例,其中程式位於 "Program" 資料夾,而在進行逐步除錯時應跳過 "Library" 資料夾中的所有檔案:
"launch": {
"configurations": [{
"type": "node",
"request": "launch",
"name": "Launch test",
"program": "${workspaceFolder:Program}/test.js",
"skipFiles": [
"${workspaceFolder:Library}/out/**/*.js"
]
}]
}
工作 (Tasks)
與 VS Code 搜尋除錯設定的方式類似,VS Code 也會嘗試自動偵測工作區中所有資料夾內 gulp、grunt、npm 和 TypeScript 專案檔案中的工作,並搜尋 tasks.json 檔案中定義的工作。工作的位置由資料夾名稱字尾表示。請注意,tasks.json 中定義的工作版本必須為 2.0.0。

從上述的 TSLint 延伸模組 工作區範例中,您可以看到來自 tslint 和 tslint-tests 資料夾中 tasks.json 檔案的兩個 已設定工作,以及許多自動偵測到的 npm 和 TypeScript 編譯器 已偵測工作。
工作區工作設定
工作區範圍的工作位於工作區設定檔的 "tasks" 區段中(透過指令選擇區中的 工作區:開啟工作區設定檔)。只有 "shell" 和 "process" 類型的工作可以在工作區設定檔中定義。
原始碼控制
透過多根工作區,有一個 原始碼控制提供者 (SOURCE CONTROL PROVIDERS) 區段,當您有多個作用中的儲存庫時,它會為您提供概覽。這些可以由多個 SCM 提供者提供;例如,您可以將 Git 儲存庫與 Azure DevOps Server 工作區並排顯示。當您在此檢視中選取儲存庫時,可以在下方看到原始碼控制的詳細資訊。

您可以使用 Ctrl+Click 或 Shift+Click 來選取多個儲存庫。它們的詳細資訊將顯示在下方的不同區域中。
延伸模組
如果您是一位延伸模組開發者,可以參閱我們的 採用多根工作區 API 指南,了解 VS Code 多根工作區 API,以及如何讓您的延伸模組在多個資料夾中良好運作。
下方列出了一些已採用多根工作區 API 的熱門延伸模組。
注意:如果某個延伸模組尚未支援多個資料夾,它仍然會在您多根工作區的第一個資料夾中運作。
延伸模組建議
VS Code 透過資料夾 .vscode 子資料夾下的 extensions.json 檔案支援資料夾層級的延伸模組建議。您也可以透過將延伸模組新增至 .code-workspace 檔案來提供全域工作區延伸模組建議。您可以使用 延伸模組:設定建議的延伸模組 (工作區資料夾) 指令來開啟您的工作區檔案,並將延伸模組識別碼 ({publisherName}.{extensionName}) 新增至 extensions.recommendations 陣列中。
{
"folders": [
{
"path": "vscode"
},
{
"path": "vscode-docs"
}
],
"extensions": {
"recommendations": ["eg2.tslint", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode"]
}
}
後續步驟
- 什麼是 VS Code「工作區」? - 更多關於單一資料夾和多根工作區的資訊。
- 偵錯 (Debugging) - 了解如何為您的應用程式設定偵錯。
- 工作 (Tasks) - 工作讓您可以在 VS Code 內執行編譯器等外部工具。
常見問題
我該如何回到單一專案資料夾的工作模式?
您可以關閉工作區並直接開啟資料夾,或是從工作區中移除該資料夾。
作為延伸模組開發者,我需要做什麼?
請參閱我們的 採用多根工作區 API 指南。大多數延伸模組都可以輕鬆支援多根工作區。