Не удалось найти задачу 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 работал, но нужно было еще несколько шагов, поэтому давайте добавим их:
- Нажмите на Настроить задачу:
![enter image description here]()
- Создайте файл tasks.json из шаблона
- .NET Core выполняет команды сборки .NET Core
Перейдите к файлу 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