URLhttps://learnscript.net/zh/vscode/tasks/
    复制链接转到说明  示例

    Visual Studio Code 任务使用和设置说明

    我被代码海扁署名-非商业-禁演绎
    阅读 11:51·字数 3558·发布 

    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 任务·Bilibili
    如何为 VSCode 任务绑定键盘快捷键,以及设置默认任务·YouTube如何为 VSCode 任务绑定键盘快捷键,以及设置默认任务·Bilibili
    如何为 VSCode 任务配置参数和环境变量·YouTube如何为 VSCode 任务配置参数和环境变量·Bilibili
    如何一次运行多个 VSCode 任务,以及设置运行顺序·YouTube如何一次运行多个 VSCode 任务,以及设置运行顺序·Bilibili