首页 > 解决方案 > 如何在构建时在 VS Code 中运行多个任务?

问题描述

使用tasks.json2.0.0 版,我无法做到,因此,当我构建我的应用程序时,多个任务会同时运行。我正在使用 gulp 进行 SCSS 编译,并且Compile/minify cms.scss自己运行我的任务工作正常,所以这不是任务本身的问题,只是 VS Code 的任务运行器。当我Run Build Task在 VS Code 中时,我的 gulp 任务没有运行,即使它已经运行了"group": "build"——只有dotnet一个运行。

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/HpsCoreWeb.csproj"
            ],
            "problemMatcher": "$msCompile",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "Compile/minify cms.scss",
            "type": "gulp",
            "task": "cms.scss:cms.min.css",
            "problemMatcher": "$node-sass",
            "group": "build"
        }
    ]
}

根据VS Code Tasks 文档

group:定义任务所属的组。在示例中,它属于test组。属于测试组的任务可以通过从命令面板运行运行测试任务来执行。

任务成功了,那么作为组dotnet build的一部分的其他任务不应该也build运行吗?我究竟做错了什么?

标签: visual-studio-codevscode-tasks

解决方案


问题是“运行测试任务”和“运行构建任务”不会执行该特定组中的所有任务。通常你会得到一个下拉选择,这样你就可以选择要执行的任务。由于您已将其中一项任务指定为默认任务,因此将跳过选择,而是执行默认任务。

您可以通过添加依赖项来解决这个问题。举个例子:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Echo 1",
            "command": "echo",
            "type": "shell",
            "args": [ "echo1" ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "dependsOn":["Echo 2"]
        },
        {
            "label": "Echo 2",
            "type": "shell",
            "command": "echo",
            "args": [ "echo2" ],
            "group": "build"
        }
    ]
}

视情况而Echo 1Echo 2Echo 2将在执行之前执行Echo 1。请注意,定义是一个列表,因此可以指定多个任务。在这种情况下,任务是并行执行的。

在您的情况下,添加"dependsOn":["Compile/minify cms.scss"]到您的主要构建任务应该执行这两个任务。


推荐阅读