【问题标题】:Visual Studio Code: Could not find the preLaunchTask 'build'?Visual Studio 代码:找不到 preLaunchTask 'build'?
【发布时间】:2017-09-23 11:25:38
【问题描述】:

我使用以下命令创建了一个新的 .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,但在我的情况下,preLaunchTask 的 launch.json 和 tasks.json 中的名称之间没有不匹配,因此答案不适用于这种情况。我正在运行 Visual Studio Code 版本 1.11.2 和 .NET Core 1.1(截至本文创建时的最新版本)。

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

【问题讨论】:

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


【解决方案1】:

尝试用绝对路径更改tasks.jsonlaunch.json中的路径。

例如在launch.json:

"program": "C:/Projects/MyProject/bin/Debug/netcoreapp1.0/XXXX.dll",
"cwd": "C:/Projects/MyProject/"

tasks.json:

"tasks": [
  {
    "label": "build",
    "command": "dotnet",
    "type": "process",
    "args": [        
      "build",
      "C:/Projects/MyProject/XXXXXX.csproj"

【讨论】:

    【解决方案2】:

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

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

    • tasks doc 说:工作区或文件夹特定任务是从工作区 .vscode 文件夹中的 tasks.json 文件配置的。
    • 错误“找不到任务 'xxx'。”对话框窗口提供按钮:Configure Task 然后打开或提供创建文件 ./.vscode/tasks.json
    • 编辑 tasks.json 文件时没有提及或可见提示,它不会被使用。
      这与例如编辑 setting.json,在这种情况下,文本会变暗,悬停时会显示一条消息:“此设置无法在此工作区中应用。将在您直接打开包含的工作区文件夹时应用。”

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

    【讨论】:

    • 正是我的问题.. 有错误报告吗?
    • 我没有找到,也没有创建新的。 git 有 5k 个未解决的问题并被滥用为支持论坛。在那里报道似乎毫无意义。
    • 就类似的未决问题发布了另一个答案,其中包含一些相关错误报告的链接stackoverflow.com/a/69967477
    【解决方案3】:

    请注意——

    如果workspaceFolder 不在同一级别,例如app 文件夹tasks.json 不会被创建,你会得到上述所有错误。我在打开项目后创建了一个子文件夹并得到了上述所有错误 - 在从正确的文件夹运行调试后全部修复 - 这可以解释重新启动 VS 代码的效果。

    【讨论】:

      【解决方案4】:

      如下更改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"
              }
          ]
      }
      

      【讨论】:

        【解决方案5】:

        对我来说,在创建 tasks.json 和/或 launch.json 文件后重新启动 VS Code 是有效的。

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

        【讨论】:

        • 感谢重启 VS Code 让我解决了这个问题。但是,现在它抱怨以下问题:“未定义或导入预定义类型'System.Object'......” VS Code 不应该也提示从 VS Code 执行“dotnet restore”吗?我想我以前见过。
        • 一般来说应该。不确定现在 VS 代码如何决定何时显示该提示。无论如何,您总是可以在 VS Code 中从终端手动执行 dotnet restore
        • 我也不记得我必须手动设置程序的路径才能在 launch.json 文件中进行调试。为什么 VS Code 不能做幕后花招?它应该知道在哪里可以找到可执行文件而不涉及用户?
        • @OlavT 这是omnisharp-vscode 的职责,团队将在未来提供此类功能。如果你感兴趣的话,你可以看看这个issue
        【解决方案6】:

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

        【讨论】:

        • 我有最新版本,但仍然有同样的问题。我必须手动创建一个“tasks.json”文件吗?似乎不是自动创建的。
        猜你喜欢
        • 2019-01-20
        • 2014-01-06
        • 2022-10-21
        • 2017-04-25
        • 2020-03-25
        • 2020-11-24
        • 2016-07-04
        • 1970-01-01
        相关资源
        最近更新 更多