Visual Studio 代码:找不到 preLaunchTask 'build'?
Visual Studio Code: Could not find the preLaunchTask 'build'?
我使用以下命令创建了一个新的 .NET Core 应用程序:
dotnet new console -o test
当我尝试在 Visual Studio 代码调试器中 运行 它时,我得到:
Could not find the preLaunchTask 'build'?
Visual Studio 代码为我生成了这些文件:
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}"
}
]
}
我的问题看起来类似于 ,但在我的例子中,preLaunchTask 的 launch.json 和 tasks.json 中的名称没有不匹配,因此答案不适用于此案件。我正在 运行ning Visual Studio 代码版本 1.11.2 和 .NET Core 1.1(创建此 post 时的最新版本)。
我在 Windows 机器和 Mac 机器上都试过同样的问题。如果我执行命令 "dotnet restore" 和 "dotnet run",代码 运行s 没有问题,但我仍然得到相同的错误:"Could not find the preLaunchTask 'build'"
这已经在 master 中得到解决,并将在下一个版本中提供。在文件夹上重新打开 VS Code 应该有助于解决问题。
对我来说,在 tasks.json
and/or launch.json
文件创建后重启 VS Code 是可行的。
另请注意,您需要使用 dll 的路径更新 launch.json
中的 "program"
设置。
更改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"
}
]
}
请注意-
如果 workspaceFolder
与例如应用程序文件夹 tasks.json
将不会创建,您将收到上述所有错误。我在打开项目后创建了一个子文件夹并得到了上述所有错误 - 在 运行 从正确的文件夹调试后全部修复 - 这可以解释重新启动 VS 代码的效果。
此错误的另一个原因可能是,使用的启动配置是在 my_project.code-workspace 文件中定义的(而不是在 launch.json 文件中)。
在这种情况下,不使用 tasks.json,但必须在 my_project.code-workspace 文件中定义任务。
这可能是一个“功能”,但它表现为一个错误,因为:
- tasks doc 说:工作区或文件夹特定任务是从工作区的 .vscode 文件夹中的 tasks.json 文件配置的。
- 错误“找不到任务 'xxx'”。对话框 window 提供按钮:
Configure Task
然后打开或提供创建文件 ./.vscode/tasks.json
- 编辑 tasks.json 文件时没有提及或可见提示,它不会被使用。
这与例如相比编辑 setting.json,在这种情况下,文本会变暗,悬停时会显示一条消息:“此设置无法应用于此工作区。当您直接打开包含工作区的文件夹时,它将被应用。”
如果使用调试配置启动调试会话:my_debug_config(工作区),则仅使用 my_project.code-工作区文件中定义的任务。
但是,虽然仍然打开相同的工作区,但选择调试配置:dir_debug_config (my_dir),它在 launch.json 文件中定义,然后将使用 tasks.json 文件中的任务.
尝试将 tasks.json
和 launch.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"
我使用以下命令创建了一个新的 .NET Core 应用程序:
dotnet new console -o test
当我尝试在 Visual Studio 代码调试器中 运行 它时,我得到:
Could not find the preLaunchTask 'build'?
Visual Studio 代码为我生成了这些文件:
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}"
}
]
}
我的问题看起来类似于
我在 Windows 机器和 Mac 机器上都试过同样的问题。如果我执行命令 "dotnet restore" 和 "dotnet run",代码 运行s 没有问题,但我仍然得到相同的错误:"Could not find the preLaunchTask 'build'"
这已经在 master 中得到解决,并将在下一个版本中提供。在文件夹上重新打开 VS Code 应该有助于解决问题。
对我来说,在 tasks.json
and/or launch.json
文件创建后重启 VS Code 是可行的。
另请注意,您需要使用 dll 的路径更新 launch.json
中的 "program"
设置。
更改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"
}
]
}
请注意-
如果 workspaceFolder
与例如应用程序文件夹 tasks.json
将不会创建,您将收到上述所有错误。我在打开项目后创建了一个子文件夹并得到了上述所有错误 - 在 运行 从正确的文件夹调试后全部修复 - 这可以解释重新启动 VS 代码的效果。
此错误的另一个原因可能是,使用的启动配置是在 my_project.code-workspace 文件中定义的(而不是在 launch.json 文件中)。
在这种情况下,不使用 tasks.json,但必须在 my_project.code-workspace 文件中定义任务。
这可能是一个“功能”,但它表现为一个错误,因为:
- tasks doc 说:工作区或文件夹特定任务是从工作区的 .vscode 文件夹中的 tasks.json 文件配置的。
- 错误“找不到任务 'xxx'”。对话框 window 提供按钮:
Configure Task
然后打开或提供创建文件 ./.vscode/tasks.json - 编辑 tasks.json 文件时没有提及或可见提示,它不会被使用。
这与例如相比编辑 setting.json,在这种情况下,文本会变暗,悬停时会显示一条消息:“此设置无法应用于此工作区。当您直接打开包含工作区的文件夹时,它将被应用。”
如果使用调试配置启动调试会话:my_debug_config(工作区),则仅使用 my_project.code-工作区文件中定义的任务。
但是,虽然仍然打开相同的工作区,但选择调试配置:dir_debug_config (my_dir),它在 launch.json 文件中定义,然后将使用 tasks.json 文件中的任务.
尝试将 tasks.json
和 launch.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"