首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual代码:找不到preLaunchTask‘构建’?

Visual代码:找不到preLaunchTask‘构建’?
EN

Stack Overflow用户
提问于 2017-04-26 07:33:15
回答 5查看 37.9K关注 0票数 20

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

代码语言:javascript
复制
dotnet new console -o test

当我试图在Visual代码调试器中运行它时,我得到:

代码语言:javascript
复制
Could not find the preLaunchTask 'build'?

Visual代码为我生成了这些文件:

代码语言:javascript
复制
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"
        }
    ]
}

代码语言:javascript
复制
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}"
        }
    ]
}

我的问题看起来类似于这一个,但在我的例子中,launch.json和tasks.json中的preLaunchTask名称并没有不匹配,所以这个答案不适用于这种情况。我正在运行VisualStudioCodeVersion1.11.2和.NET Core1.1(创建这篇文章时的最新版本)。

我在Windows机器和Mac电脑上都尝试过同样的问题。如果我执行命令"dotnet restore“和"dotnet run",代码运行时不会出现任何问题,但仍然会得到相同的错误:”未能找到preLaunchTask 'build'“

EN

回答 5

Stack Overflow用户

发布于 2018-02-16 04:38:38

更改tasks.json如下。

代码语言:javascript
复制
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"
        }
    ]
}
票数 8
EN

Stack Overflow用户

发布于 2021-06-23 15:31:40

造成此错误的另一个原因可能是,使用的启动配置是在my_project.code-工作区文件(而不是在launch.json文件中)中定义的。

在这种情况下,不使用tasks.json,但任务必须在my_project.code-工作区文件中定义。

这可能是一个“特性”,但它的行为是一个bug,因为:

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

如果使用调试配置: my_debug_config (工作区)启动调试会话,则只使用Myproject.code-工作区文件中定义的任务。

但是,在打开相同的工作区时,选择调试配置: dir_debug_config (my_dir),这是在launch.json文件中定义的,然后将使用tasks.json文件中的任务。

票数 4
EN

Stack Overflow用户

发布于 2021-10-22 07:11:59

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

例如,在launch.json

代码语言:javascript
复制
"program": "C:/Projects/MyProject/bin/Debug/netcoreapp1.0/XXXX.dll",
"cwd": "C:/Projects/MyProject/"

tasks.json

代码语言:javascript
复制
"tasks": [
  {
    "label": "build",
    "command": "dotnet",
    "type": "process",
    "args": [        
      "build",
      "C:/Projects/MyProject/XXXXXX.csproj"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43627751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档