web-dev-qa-db-fra.com

Impossible de trouver la tâche de pré-lancement 'build'

Pour configurer Visual Studio Code afin de déboguer les scripts C # sur OSX, j'ai suivi toutes les étapes répertoriées dans l'article ci-dessous:

Débogage C # sur OSX avec du code Visual Studio

Lorsque j'ai essayé de déboguer l'exemple de script C #, Visual Studio Code a signalé cette erreur:

Impossible de trouver la tâche de pré-lancement 'build'

En conséquence, je n'ai pas pu inspecter les variables définies dans le script.

Ceci est une copie du fichier 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
        }
    ]
}

Ceci est une copie du fichier tasks.json :

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

Comment résoudre ça?

38
gnerkus

Vous pouvez utiliser le code Visual Studio pour le résoudre.

Lorsque vous voyez le message d'erreur, cliquez sur les étapes ci-dessous error sample

  1. Configurer la tâche
  2. Créer un fichier tasks.json à partir d'un modèle
  3. NET Core Exécute les commandes de construction .NET Core

Le VSCode créera un fichier semblable à celui-ci:

{
    // 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"
        }
    ]
}

C'est fini. Le VSCode construira le projet avant son exécution.

42
Jeferson Tenorio

L'erreur se produit car le code Visual Studio ne peut trouver aucune tâche dans le tasks.json avec la valeur taskName définie sur 'build'.

La propriété preLaunchTask du fichier launch.json définit la tâche à exécuter avant le lancement du script. A partir de la question, Visual Studio Code a été configuré pour exécuter la tâche build avant de lancer le script:

preLaunchTask: 'build'

Mais il n'y a pas de tâche nommée 'build' dans le fichier tasks.json.

Pour résoudre ce problème, vous devez modifier la valeur de la propriété preLaunchTask en 'exe', qui est la tâche de construction définie dans le fichier tasks.json.

22
gnerkus

Il semble que cela sera différent pour chaque scénario.

Pour moi, ce que @Jeferson Tenorio a fonctionné, mais il lui fallait quelques étapes supplémentaires, alors ajoutons-les:

  1. Cliquez sur Configure Task: enter image description here
  2. Créer un fichier tasks.json à partir d'un modèle
  3. .NET Core Exécute les commandes de construction .NET Core
  4. Allez à votre launch.json fichier, et sous configurations/programme vous trouverez ceci:

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

    Remplacez simplement <insert-target-framework-here> et <insert-project-name-here> avec votre cadre cible, dans mon cas, ce serait netcoreapp2.0 et ensuite votre nom de projet (si vous n'avez rien changé, le nom de votre projet doit être identique au dossier dans lequel vous avez créé votre projet), il devrait ressembler à ceci:

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

    J'espère que ça aide.

7
marcos.borunda

Sous Linux, pour que la commande de compilation fonctionne, je devais modifier le fichier tasks.json à partir de:

{
    // 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"
        }
    ]
}

la raison en est que Linux traitera la tâche générée par VSC comme la commande en cours d'exécution "dotnet build" au lieu de "dotnet" avec le paramètre "build". Sans modification, vous recevrez "dotnet build: command not found" avec le code de sortie 127

0
Jixster