Visual Studio代码:找不到preLaunchTask'build'?

时间:2017-04-26 07:33:15

标签: visual-studio-code .net-core vscode-tasks

我使用以下命令创建了一个新的.NET Core应用程序:

dotnet new console -o test

当我尝试在Visual Studio Code调试器中运行它时,我得到:

Could not find the preLaunchTask 'build'?

Visual Studio Code为我生成了这些文件:

tasks.json:
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "dotnet",
    "isShellCommand": true,
    "args": [],
    "tasks": [
        {
            "taskName": "build",
            "args": [ ],
            "isBuildCommand": true,
            "showOutput": "silent",
            "problemMatcher": "$msCompile"
        }
    ]
}

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": ".NET Core Launch (console)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceRoot}/bin/Debug/<target-framework>/<project-name.dll>",
            "args": [],
            "cwd": "${workspaceRoot}",
            "stopAtEntry": false,
            "console": "internalConsole"
        },
        {
            "name": ".NET Core Launch (web)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceRoot}/bin/Debug/<target-framework>/<project-name.dll>",
            "args": [],
            "cwd": "${workspaceRoot}",
            "stopAtEntry": false,
            "launchBrowser": {
                "enabled": true,
                "args": "${auto-detect-url}",
                "windows": {
                    "command": "cmd.exe",
                    "args": "/C start ${auto-detect-url}"
                },
                "osx": {
                    "command": "open"
                },
                "linux": {
                    "command": "xdg-open"
                }
            },
            "env": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            },
            "sourceFileMap": {
                "/Views": "${workspaceRoot}/Views"
            }
        },
        {
            "name": ".NET Core Attach",
            "type": "coreclr",
            "request": "attach",
            "processId": "${command:pickProcess}"
        }
    ]
}

我的问题看起来与this one类似,但在我的情况下,launchLaunchTask中的名称和tasks.json中的名称之间没有不匹配,因此在这种情况下答案不适用。我正在运行Visual Studio Code版本1.11.2和.NET Core 1.1(截至创建此帖子时的最新版本)。

我在Windows机器和Mac上都尝试过同样的问题。如果我执行命令“dotnet restore”和“dotnet run”,代码运行没有问题,但我仍然得到相同的错误:“找不到preLaunchTask'构建'”

5 个答案:

答案 0 :(得分:16)

对我来说,它可以在创建tasks.json和/或launch.json文件后重启VS代码。

另请注意,您需要使用dll的路径更新"program"中的launch.json个设置。

答案 1 :(得分:2)

如下所示更改tasks.json。

tasks.json
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "command": "",
    "args": [],
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "shell",
            "args": [
                "build"
            ],
            "options": {
                "cwd": "${workspaceRoot}"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared"
            },
            "problemMatcher": "$msCompile"
        }
    ]
}

答案 2 :(得分:0)

这已在master中得到解决,并将在下一个版本中提供。重新打开该文件夹上的VS代码应该有助于解决问题。

答案 3 :(得分:0)

请注意-

如果/** * Function comment * */ void My Function() {} 与例如应用程序文件夹workspaceFolder将不会创建,并且会出现上述所有错误。打开项目后,我创建了一个子文件夹,并得到了以上所有错误-从正确的文件夹中运行调试后,所有错误均已修复-这可以解释重新启动VS代码的效果。

答案 4 :(得分:0)

此错误的另一个原因可能是,使用的启动配置是在 my_project.code-workspace 文件中定义的(而不是在 launch.json 文件中)。
在这种情况下,不使用 tasks.json,但必须在 my_project.code-workspace 文件中定义任务。

这可能是一个“功能”,但它表现为一个错误,因为:

  • tasks doc 表示:工作区或文件夹特定的任务是从工作区的 .vscode 文件夹中的 tasks.json 文件配置的。
  • 错误“找不到任务‘xxx’。”对话框窗口提供按钮: while (dr.Read()) { var tmpUser = new User(); tmpUser.GroupName = dr["groupName"] != DBNull.Value ? dr["groupName"].ToString() : ""; tmpUser.CompanyUdidDescription = dr["companyUDIDDescription"] != DBNull.Value ? dr["companyUDIDDescription"].ToString() : ""; tmpUsers.Add(tmpUser); } return tmpUsers; 然后打开或提供创建文件 ./.vscode/tasks.json
  • 编辑tasks.json文件时没有提及或可见提示,它将不会被使用。
    这与例如比较编辑 setting.json,在这种情况下,文本会变暗,悬停时会显示一条消息:“此设置无法在此工作区中应用。当您直接打开包含的工作区文件夹时,它将被应用。”

如果使用调试配置启动调试会话:my_debug_config (workspace),则仅使用在 my_project.code-workspace 文件中定义的任务。
但是在仍然打开相同的工作区的同时,选择调试配置:在 launch.json 文件中定义的 dir_debug_config (my_dir),然后将使用 tasks.json 文件中的任务。