URLhttps://learnscript.net/zh-hant/vscode/tasks/
    複製連結移至說明  範例

    Visual Studio Code 工作使用和設定說明

    閱讀 10:59·字數 3296·發佈 
    Youtube 頻道
    訂閱 480

    Visual Studio Code 工作

    Visual Studio Code(VSCode)工作允許你設定和執行特定的命令、腳本或應用程式,以完成特定的開發工作。例如,你可以設定一個工作來執行 Windows 命令提示字元中的命令,用於複製檔案或執行批次檔。

    在 Visual Studio Code 中建立自訂工作

    要建立自訂工作,可以通過以下兩種方式。通過功能表項終端機 | 設定工作…,或執行 VSCode 命令Tasks: Configure Task

    在設定工作時,VSCode 會顯示一個面板,並提供一些選項。如果點選從範本建立 tasks.json 檔案,然後選擇Others選項,那麽將建立一個簡單的執行命令的工作echo,用於顯示資訊。

    完成工作的設定後,VSCode 會在工作區資料夾的.vscode目錄中建立tasks.json檔案,該檔案包含所有自訂工作的資訊。

    選擇工作偵測或其他範本

    如果你使用了其他的工具(比如,gulp),那麽 VSCode 還會針對性的提供相應的偵測功能。這將根據已經編寫的程式碼,來建立工作。

    此外,一些範本,比如MSBuild.Net Core,可建立專門用於執行 msbuild 或 dotnet 命令的工作。

    設定工作操作沒有反應

    請註意,如果執行設定工作操作沒有反應,可能是因為tasks.json檔案已經存在。

    執行 Visual Studio Code 自訂工作

    工作建立後,可通過以下方式執行。使用功能表項終端機 | 執行工作…,或執行 VSCode 命令Tasks: Run Task

    選擇之前建立的工作echo,點選在不掃描工作輸出的情況下繼續,即可在終端機面板中看到輸出結果Hello

    Visual Studio Code 工作檔案 tasks.json

    當需要修改現有工作或新增新工作時,可以直接編輯.vscode目錄中tasks.json檔案。該檔案的tasks屬性是包含工作的陣列,每個工作對應一個物件。要建立新工作,只需在該陣列中新增新的工作物件即可。

    對於工作物件,一般擁有以下屬性。

    label 屬性

    label屬性為工作的名稱,顯示在選擇面板中。

    detail 屬性

    detail屬性為工作的詳細說明,用於提供更多上下文資訊。

    icon 屬性

    icon屬性是一個表示工作圖示的物件,該物件的屬性id為圖示形狀,屬性color為圖示色彩。

    group 屬性

    group屬性表示工作所在的執行組,有效值如下:build為組建工作,test為測試工作,none表示工作不屬於任何組。

    type 屬性

    type屬性為工作的類型,有效值如下:process表示工作為處理序,shell表示工作是一個命令。

    command 屬性

    command屬性與工作的類型(type屬性)有關,可以包含 VSCode 變數。

    如果工作為處理序,那麽command屬性是指向可執行目標的路徑(絕對或相對路徑,如果使用相對路徑,則預設相對於 VSCode 工作區目錄)。如果工作為命令,那麽command屬性是需要在 VSCode 終端機中執行的命令。

    hide 屬性

    如果hide屬性為true,那麽工作不會出現在工作選擇面板中(預設顯示)。

    tasks.json
    {
    	"version": "2.0.0",
    	"tasks": [
    		{
    			// 工作名稱
    			"label": "My task",
    			// 工作說明
    			"detail": "This is a test task",
    			// 工作圖示
    			"icon": {
    				"id": "alert",
    				"color": "terminal.ansiCyan",
    			},
    			// 工作不在任何執行組中
    			"group": "none",
    			// 執行工作區根目錄下的 test.bat
    			"type": "process",
    			"command": "${workspaceFolder}\\test.bat",
    			// 不在工作選擇面板中隱藏工作
    			"hide": false,
    		},
    	]
    }

    設定 Visual Studio Code 工作的目前工作目錄

    如果你希望為工作設定目前工作目錄,那麽只需在tasks.json檔案中,為工作物件增加options屬性,該屬性是一個物件,其cwd屬性即為工作的目前工作目錄。

    設定不存在的工作目錄

    如果將工作目錄設定為不存在的路徑,那麽工作可能會執行失敗。

    下面的工作,將執行批次檔Z:\code\test.bat

    tasks.json
    {
    	"version": "2.0.0",
    	"tasks": [
    		{
    			"label": "My Task 2",
    			"type": "process",
    			"command": "test.bat",
    			"options": {
    				"cwd": "Z:\\code\\"
    			}
    		},
    	]
    }

    設定預設的 Visual Studio Code 工作

    使用功能表項終端機 | 設定預設組建工作…或執行 VSCode 命令Tasks: Configure Default Build Task,從面板中選擇一個工作,即可將該工作設定為預設組建工作。

    執行 VSCode 命令Tasks: Configure Default Test Task,從面板中選擇一個工作,即可將該工作設定為預設測試工作。

    以上兩種方式,相當於將工作物件的group屬性,設定為包含kindisDefault屬性的物件。其中,kind屬性為build(組建工作)或test(測試工作),isDefault屬性為true(表示該工作為預設工作)。

    一旦設定了預設組建工作,就可以使用鍵盤快速鍵Ctrl+Shift+B,或命令Tasks: Run Build Task來快速執行預設組建工作。一旦設定了預設測試工作,就可以命令Tasks: Run Test Task來快速執行預設測試工作。

    當有多個預設工作時

    如果多個工作都被設為預設工作,則執行階段可能仍需手動選擇。

    為 Visual Studio Code 工作繫結鍵盤快速鍵

    除了預設組建工作,你還可以為其他工作繫結鍵盤快速鍵。首先,按下Ctrl+K Ctrl+S開啟鍵盤快速鍵面板。然後,切換到 JSON 編輯模式(點選右上角圖示),在keybindings.json中新增一個物件,用於繫結某個工作,該物件的屬性如下。

    key 屬性

    key屬性是與工作繫結的鍵盤快速鍵。

    command 屬性

    command屬性應該設定為workbench.action.tasks.runTask,表示鍵盤快速鍵將執行工作。

    args 屬性

    args屬性為需要執行的工作的名稱。

    在下面的範例中,為工作echo指定了鍵盤快速鍵Ctrl+T Ctrl+E

    keybindings.json
    [
    	{
    		"key": "ctrl+t ctrl+e",
    		"command": "workbench.action.tasks.runTask",
    		"args": "echo",
    	},
    ]

    除了繫結特定工作,你還可以為常用的與工作相關的命令,設定鍵盤快速鍵。

    keybindings.json
    [
    	{
    		"key": "ctrl+shift+t",
    		// 選擇並執行工作
    		"command": "workbench.action.tasks.runTask",
    	},
    	{
    		"key": "ctrl+shift+r",
    		// 執行上一次執行的工作
    		"command": "workbench.action.tasks.reRunTask",
    	},
    ]

    為 Visual Studio Code 工作設定參數

    當工作類型為shell時,可直接將完整命令和參數作為一個字串,寫入屬性command中,或者將命令和參數組成一個陣列作為command屬性的值。當然,為了提高可讀性和維護性,也可使用args屬性(陣列)單獨包含參數。

    當工作類型為process時,必須使用args屬性(陣列)來傳遞參數。

    下面的範例,工作withargs1withargs2均顯示資訊Hello World,工作withargs3顯示目錄Z:\下的內容,工作withargs4將參數Jack12傳遞給批次檔show.bat(位於 VSCode 工作區根目錄)。

    tasks.json
    {
    	"label": "withargs1",
    	"type": "shell",
    	"command": "Write-Output 'Hello World'",
    },
    {
    	"label": "withargs2",
    	"type": "shell",
    	"command": "Write-Output",
    	"args": ["Hello World"],
    },
    {
    	"label": "withargs3",
    	"type": "shell",
    	"command": [
    		"Get-ChildItem",
    		"-Path Z:\\",
    	],
    },
    {
    	"label": "withargs4",
    	"type": "process",
    	"command": "show.bat",
    	"args": [
    		"Jack",
    		"12"
    	]
    },
    show.bat
    echo %1's age is %2
    REM 工作 withargs4 的執行結果
    Jack's age is 12

    為 Visual Studio Code 工作設定環境變數

    如果希望為工作設定環境變數,那麽可為tasks.json檔案中的工作物件增加options屬性,該屬性的env屬性是包含環境變數的物件(物件的屬性名稱為環境變數的名稱,物件的值為環境變數的值),可以包含 VSCode 變數。

    下面的範例,工作today將顯示環境變數TODAY,此變數已經被設定為了2025-5-24

    tasks.json
    {
    	"label": "today",
    	"type": "shell",
    	"command": "$env:TODAY",
    	"options": {
    		"env": {
    			"TODAY": "2025-5-24"
    		}
    	}
    },
    2025-5-24

    一次執行多個 Visual Studio Code 工作

    如果你希望一次執行多個工作,那麽可以為檔案tasks.json的工作物件,新增dependsOn屬性,該屬性是一個陣列,包含目前工作(目前工作本身不需要設定commandtype屬性)所相依的所有工作名稱。

    此外,使用工作物件的dependsOrder屬性,可以控製依賴工作的執行順序。該屬性可以取以下有效值:parallel(預設值)表示平行執行所有依賴工作,sequence表示按依賴工作的出現順序執行。

    下面的範例,工作withargs1withargs2將依次執行。

    tasks.json
    {
    	"label": "multi",
    	"dependsOn": [
    		"withargs1",
    		"withargs2"
    	],
    	"dependsOrder": "sequence",
    },

    原始碼

    tasks.json·codebeatme/vscode·GitHub
    keybindings.json·codebeatme/vscode·GitHub
    show.bat·codebeatme/vscode·GitHub

    講解影片

    VSCode 建立和執行自訂工作·YouTube
    VSCode 快速執行某個工作(繫結鍵盤快速鍵),以及設定預設工作·YouTube
    VSCode 為工作設定參數和環境變數·YouTube
    VSCode 一次執行多個工作,以及設定工作執行順序·YouTube