VSCode: переменная среды в задаче не найдена - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь определить свои собственные переменные среды в tasks.json в VSCode.Перейдя по каждой ссылке, которую я нашел до сих пор, я попробовал следующее:

{
"version": "2.0.0",
"type": "shell",
"options": {
    "env": {
        "APP_NAME": "myApp"
    }
},
"problemMatcher": {
    "owner": "cpp",
    "fileLocation": [
        "relative",
        "${workspaceFolder}"
    ],
    "pattern": {
        "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
        "file": 1,
        "line": 2,
        "column": 3,
        "severity": 4,
        "message": 5
    }
},
"presentation": {
    "echo": true,
    "reveal": "always",
    "focus": false,
    "panel": "dedicated",
    "showReuseMessage": false
},
"tasks": [
    {
        "label": "Build Release",
        "command": "python ./scripts/build_app.py $APP_NAME",
        "group": {
            "kind": "build",
            "isDefault": true
        }
    }
    ]
}

Мне это нужно, потому что мы запускаем процесс сборки с помощью скрипта Python, и поэтому мне нужно дать ему имя приложения, которое яхочу построить.Поскольку у меня также есть скрипты Python для тестирования, выполнения, отладки и т. Д., Я бы предпочел изменять имя приложения только один раз в файле tasks.json, а не в каждой задаче.

В соответствии с указаниямидолжно быть возможно так, как я это сделал, но в консоли powershell переменная $ APP_NAME не подставляется.Кроме того, ни в командной оболочке cmd, ни в bash это, похоже, не работает.

Я был бы очень признателен за любую помощь, которую кто-то может мне дать.

Ответы [ 3 ]

0 голосов
/ 24 октября 2018

Используйте $env:APP_NAME в вашем случае.См. ссылки на переменные среды .

Переменные среды

Вы также можете ссылаться на переменные среды с помощью синтаксиса ${env:Name} (например, ${env:PATH}).

{
    "type": "node",
    "request": "launch",
    "name": "Launch Program",
    "program": "${workspaceFolder}/app.js",
    "cwd": "${workspaceFolder}",
    "args": [ "${env:USERNAME}" ]
}

Примечание. Обязательно совпадите с именем переменной среды, например ${env:Path} в Windows.

0 голосов
/ 04 июля 2019

Неправильное использование по одной конкретной причине.

Переменные среды, используемые в файле tasks.json options, не могут ссылаться на другие атрибуты задач, в частности command в случае OP:

options : переопределить значения по умолчанию для cwd (текущий рабочий каталог), env (переменные среды) или shell (оболочка по умолчанию).Параметры могут быть установлены для каждой задачи, но также глобально или для платформы.На настроенные здесь переменные среды можно ссылаться только из сценария или процесса задачи, и они не будут разрешены, если они являются частью ваших аргументов, команд или других атрибутов задачи.

См. Параметры

Попробуйте удалить ссылку на первый аргумент в скрипте ./scripts/build_app.py в качестве значения для $APP_NAME, и вместо этого используйте os.environ['APP_NAME'] изнутри в скрипте ./scripts/build_app.py.

0 голосов
/ 24 октября 2018

Если вы используете powershell, используйте %VAR% вместо $VAR.

"command": "python ./scripts/build_app.py %APP_NAME%",
...