Как настроить код visual studio для запуска скомпилированного кода Go при использовании Run / Run

#go #visual-studio-code

#Вперед #visual-studio-code

Вопрос:

Я установил следующую задачу для компиляции моего проекта Go после этого сообщения в блоге: https://robertbasic.com/blog/build-and-run-golang-projects-in-vs-code /

tasks.json:

 {
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build Go",
            "type": "shell",
            "command": "go build",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}
  

Теперь я могу скомпилировать проект с помощью терминала> Выполнить задачу сборки

Для запуска и отладки я создал:

запустите.json:

 {
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${fileDirname}",
            "cwd": "${workspaceRoot}",
            "args": [],
            "env": {}
        }
    ]
}
  

Но это не работает, я получаю следующее сообщение:

 package .: no Go files in /usr/home/username/projects/my_app/.vscode
Process exiting with code: 1 signal: false
  

Код Visual Studio под FreeBSD12.1 (вероятно, не имеет значения).

Что мне нужно сделать, чтобы запустить программу при использовании F5 / CTRL F5? Приветствуется любой совет, включая рекомендуемый раздел справки или запись в блоге.

Комментарии:

1. команда go выполняется в папке .vscode, вам просто нужно исправить каталог, в котором выполняется код

2. Проблема заключалась также в том, что я не запускал F5 из основного пакета.

3. В большинстве проектов я меняю program на ${workspaceFolder} или ${workspaceFolder}/cmd/myproject или любую другую папку, содержащую мой основной пакет, и это эквивалентно запуску go run . в этой папке. Таким образом, не имеет значения, какой файл go у вас открыт в данный момент (если это даже файл go), он будет просто отлаживаться. Все остальные значения обычно остаются по умолчанию, за исключением случайного args или env дополнительного.

Ответ №1:

Предполагая, что мой основной пакет находится в корневой папке рабочей области, я всегда определяю то же самое .vscode/launch.json :

 {
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${workspaceFolder}",
            "env": {},
            "args": []
        }
    ]
}
  

Оттуда я могу нажать F5из любого места / любого файла, и сеанс отладки просто начнется.

Комментарии:

1. Это должно быть отмечено как ответ. Большое вам спасибо, Фон! Исправлена моя проблема.

2. @pandascope Молодец! Я рад, что этот ответ по-прежнему полезен.