web-dev-qa-db-ja.com

preLaunchタスク 'build'が見つかりませんでした

OSXでC#スクリプトをデバッグするようにVisual Studio Codeを構成するには、以下の記事に記載されているすべての手順を実行しました。

Visual Studio Codeを使用したOSXでのC#のデバッグ

サンプルC#スクリプトをデバッグしようとすると、Visual Studio Codeが次のエラーを報告しました。

PreLaunchタスク 'build'が見つかりませんでした

その結果、スクリプトで定義された変数を検査できませんでした。

これは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"
        }
    ]
}

どうすれば解決できますか?

38
gnerkus

Visual Studio Codeを使用して解決できます。

エラーメッセージが表示されたら、以下の手順をクリックしてください error sample

  1. タスクを構成する
  2. テンプレートからtasks.jsonファイルを作成する
  3. 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は実行前にプロジェクトをビルドします。

42

このエラーは、Visual Studio Codeがtasks.jsontaskName値を'build'に設定したタスクを見つけられないために発生します。

launch.jsonファイルのpreLaunchTaskプロパティは、スクリプトを起動する前に実行する必要があるタスクを定義します。質問から、スクリプトを起動する前にタスクbuildを実行するようにVisual Studio Codeが構成されています。

preLaunchTask: 'build'

ただし、tasks.jsonファイルには'build'という名前のタスクはありません。

これを修正するには、preLaunchTaskプロパティの値を'exe'に変更する必要があります。これは、tasks.jsonで定義されたビルドタスクです。ファイル。

22
gnerkus

これはシナリオごとに異なるようです。

私にとって、@ 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"

    これがお役に立てば幸いです。

7
marcos.borunda

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によって生成されたタスクを、「build」のパラメーターを指定した「dotnet」ではなく「dotnet build」コマンドを実行するものとして扱うためです。変更せずに、終了コード127で「dotnet build:command not found」を受け取ります。

0
Jixster