Это заставляет меня гайки (гайки!). Файл сборки/запуска является правильным, а команда fmt является правильной. Но если я попытаюсь объединиться в один файл задач, он перестанет работать.VS Code tasks.json - Задачи работают индивидуально, но не объединены.
Эти два прекрасно работают сами по себе и вести себя так, как я хочу:
tasks.json
{
"version": "0.1.0",
"isShellCommand": true,
"showOutput": "always",
"command": "go",
"taskName": "build",
"args": [
"build",
"-o",
"${workspaceRoot}.exe",
"&&",
"${workspaceRoot}.exe"
],
"isBuildCommand": true
}
tasks.json
{
"version": "0.1.0",
"isShellCommand": true,
"showOutput": "always",
"command": "go",
"taskName": "fmt",
"args": [
"fmt",
"${file}"
],
"isBuildCommand": true
}
Но объединены в один файл, он будет не работает:
tasks.json
{
"version": "0.1.0",
"isShellCommand": true,
"showOutput": "always",
"command": "go",
"tasks": [
{
"taskName": "build",
"args": [
"build",
"-o",
"${workspaceRoot}.exe",
"&&",
"${workspaceRoot}.exe"
],
"isBuildCommand": true
},
{
"taskName": "fmt",
"args": [
"fmt",
"${file}"
]
}
]
}
Ошибка приведены на сборке:
can't load package: package build: cannot find package "build" in any of:
D:\dev\Go\src\build (from $GOROOT)
D:\dev\Gopher\src\build (from $GOPATH)
can't load package: package -o: cannot find package "-o" in any of:
D:\dev\Go\src\-o (from $GOROOT)
D:\dev\Gopher\src\-o (from $GOPATH)
can't load package: package d:/dev/Gopher/src/myproject.exe: cannot find package "d:/dev/Gopher/src/myproject.exe" in any of:
D:\dev\Go\src\d:\dev\Gopher\src\myproject.exe (from $GOROOT)
D:\dev\Gopher\src\d:\dev\Gopher\src\myproject.exe (from $GOPATH)
Я не могу понять, почему это работает в одну сторону, а не другой. Второй способ (для комбинированных задач) изложена здесь: Define multiple tasks in VSCode
Ответ: Проблема заключается в добавлении «сборки» или «FMT» в качестве аргументов, когда он уже включен в список TASKNAME. Я не знал, как это работает. Заключительный рабочий продукт, который позволяет пользователям разрабатывать, не заботясь о тупых окон брандмауэров:
tasks.json (конечная & работает благодаря @ не-а-игрок в гольф)
{
"version": "0.1.0",
"isShellCommand": true,
"showOutput": "always",
"command": "go",
"echoCommand": true ,
"tasks": [
{
"taskName": "build",
"args": [
"-o",
"${workspaceRoot}.exe",
"&&",
"${workspaceRoot}.exe"
],
"isBuildCommand": true
},
{
"taskName": "fmt",
"args": [
"${file}"
]
}
]
}
добавления "&&", "$ {workspaceRoot} .exe" работает для меня. Я предполагаю, что проблема связана с тем, что я снова перечисляю имя задачи внутри аргументов. Спасибо! – victoroux
@victoroux это научило меня об этой функции в vscode, которую я не знал, поэтому спасибо :) –