Как запускать задачи по очереди? - PullRequest
0 голосов
/ 14 июля 2020

Я хотел бы настроить одну задачу с меткой «Сборка, а затем выполнить», которая будет выполнять определенную задачу сборки c, а затем запускать исполняемый файл. Я думал, что свойство dependsOn - это то, что я искал, но, как оказалось, вместо этого оно выполняет задачи параллельно.

Вот пример задач. json:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build",
            "type": "shell",
            "command": "g++ -g ${workspaceFolder}/main.cpp -o ${workspaceFolder}/main.exe",
            "problemMatcher": "$gcc"
        },
        {
            "label": "Run",
            "type": "shell",
            "command": "${workspaceFolder}/main.exe"
        },
        {
            "label": "Build and then Run",
            "type": "shell",
            "dependsOn": [    // <------ important
                "Run",
                "Build"
            ]
        }
    ]
}

Неважно, в каком порядке я помещаю задачи в массив dependsOn. Задача «Выполнить» выполняется с ошибкой, поскольку задача «Сборка» создает исполняемый файл слишком поздно.

1 Ответ

1 голос
/ 14 июля 2020
{
   "label": "Build and then Run",
   "type": "shell",
   "dependsOrder": "sequence",    <= `parallel must be the default
   "dependsOn": [
     "Run",
     "Build"
   ]
}

Если вы укажете "dependsOrder": "sequence", то зависимости ваших задач выполняются в том порядке, в котором они перечислены в зависимо. Любые фоновые задачи / задачи слежения, используемые в зависимости от «playsOrder»: «sequence», должны иметь средство сопоставления проблем, которое отслеживает, когда они «выполнены».

Это подразумевает, плюс ваш опыт, что отсутствие опции dependsOn означает, что по умолчанию задачи будут выполняться параллельно, а не последовательно.

...