找不到preLaunch任务'build'

gne*_*kus 42 c# visual-studio visual-studio-code

要配置Visual Studio代码以在OSX上调试C#脚本,我按照以下文章中列出的所有步骤操作:

使用Visual Studio代码在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
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这是tasks.json文件的副本:

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

我该如何解决这个问题?

Jef*_*rio 45

您可以使用Visual Studio代码来解决它.

当您看到错误消息时,请单击下面的步骤 错误样本

  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"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

都结束了.VSCode将在运行之前构建项目.


gne*_*kus 22

错误发生,因为Visual Studio代码无法找到在任何任务tasks.jsontaskName设定值'build'.

launch.json文件的preLaunchTask属性定义了在启动脚本之前应执行的任务.从问题中,Visual Studio Code已配置为在启动脚本之前运行任务:build

preLaunchTask: 'build'
Run Code Online (Sandbox Code Playgroud)

但是'build'tasks.json文件中没有命名任务.

要解决此问题,您应该将preLaunchTask属性的值更改为'exe',即在tasks.json文件中定义的构建任务.

  • 这没有帮助 - 我的默认tasks.json文件中没有`exe`任务 (5认同)
  • 请注意 **taskName** 已弃用,tasks.json 应使用 **label** 来命名任务。然后 launch.json 可以通过该标签引用任务。 (2认同)

mar*_*nda 7

似乎对于每种情况这都是不同的。

对我来说,@ Jeferson Tenorio的工作原理是什么,但是还需要一些步骤,因此让我们添加它们:

  1. 单击配置任务: 在此处输入图片说明
  2. 从模板创建task.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"

    我希望这有帮助。


pui*_*uio 5

正如上面答案中所建议的,您需要在文件中定义启动项launch.json,而不是在blah.code-workspace文件中。

后者不读取定义的任务tasks.json,而仅读取同一 .code-workspace 文件中定义的任务。

错误报告: