Не удалось найти задачу preLaunch 'build'

Чтобы настроить код Visual Studio для отладки сценариев С# в OSX, я выполнил все шаги, перечисленные в следующей статье:

Отладка С# в OSX с кодом Visual Studio

Когда я попытался отладить образец С# script, код Visual Studio сообщил об этой ошибке:

Не удалось найти задачу preLaunch 'build'

Как следствие, я не смог проверить переменные, определенные в script.

Это копия файла launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch console application",
            "type": "mono",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceRoot}/Program.exe",
            "args": [],
            "cwd": "${workspaceRoot}",
            "stopAtEntry": false
        }
    ]
}

Это копия файла tasks.json:

{
    "version": "0.1.0",
    "command": "mcs",
    "args": [
        "-debug",
        "Program.cs"
    ],  
    "showOutput": "silent",
    "taskSelector": "/t:",
    "tasks": [
        {
            "taskName": "exe",
            "isBuildCommand": true,
            "problemMatcher": "$msCompile"
        }
    ]
}

Как это разрешить?

Ответ 1

Вы можете использовать код Visual Studio для его решения.

Когда вы увидите сообщение об ошибке, нажмите на следующие шаги: образец ошибки

  • Настройка задачи
  • Создать файл task.json из шаблона
  • NET Core Выполняет команды построения .NET Core

VSCode создаст такой файл:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet build",
            "type": "shell",
            "group": "build",
            "presentation": {
                "reveal": "silent"
            },
            "problemMatcher": "$msCompile"
        }
    ]
}

Все закончилось. VSCode будет создавать проект перед запуском.

Ответ 2

Ошибка возникает из-за того, что Visual Studio Code не может найти какую-либо задачу в tasks.json, значение taskName установлено на 'build'.

Свойство preLaunchTask файла launch.json определяет задачу, которая должна быть выполнена до запуска script. Из вопроса, Visual Studio Code был настроен для запуска задачи build перед запуском script:

preLaunchTask: 'build'

Но нет задачи с именем 'build' в файле tasks.json.

Чтобы исправить это, вы должны изменить значение свойства preLaunchTask на 'exe', что является задачей сборки, которая была определена в файле tasks.json.

Ответ 3

Похоже, что это будет отличаться для каждого сценария.

Для меня, что @Jeferson Tenorio работал, но нужно было еще несколько шагов, поэтому давайте добавим их:

  1. Нажмите на Настроить задачу: enter image description here
  2. Создайте файл tasks.json из шаблона
  3. .NET Core выполняет команды сборки .NET Core
  4. Перейдите к файлу launch.json, и в разделе конфигурации/программы вы найдете это:

    ${workspaceFolder}/bin/Debug/<insert-target-framework-here>/<insert-project-name-here>.dll

    Просто замените <insert-target-framework-here> и <insert-project-name-here> вашей целевой платформой, в моем случае это будет netcoreapp2.0, а затем имя вашего проекта (если вы ничего не изменили, имя вашего проекта должно совпадать с папкой, в которой вы создали проект), это должно выглядеть примерно так:

    "program": "${workspaceFolder}/bin/Debug/netcoreapp2.0/MyProject.dll"

    Надеюсь, это поможет.

Ответ 4

В Linux, чтобы заставить работать команду сборки, мне нужно было изменить файл tasks.json с:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet build",
            "type": "shell",
            "args": [
                // Ask dotnet build to generate full paths for file names.
                "/property:GenerateFullPaths=true",
                // Do not generate summary otherwise it leads to duplicate errors in Problems panel
                "/consoleloggerparameters:NoSummary"
            ],
            "group": "build",
            "presentation": {
                "reveal": "silent"
            },
            "problemMatcher": "$msCompile"
        }
    ]
}

в:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "shell",
            "args": [
                "build"
                // Ask dotnet build to generate full paths for file names.
                "/property:GenerateFullPaths=true",
                // Do not generate summary otherwise it leads to duplicate errors in Problems panel
                "/consoleloggerparameters:NoSummary"
            ],
            "group": "build",
            "presentation": {
                "reveal": "silent"
            },
            "problemMatcher": "$msCompile"
        }
    ]
}

причина этого в том, что Linux будет воспринимать задачу, сгенерированную VSC, как выполнение команды "сборка dotnet" вместо "dotnet" с параметром "build". Без изменений вы получите "dotnet build: команда не найдена" с кодом выхода 127