VSCode:找不到任务中的环境变量

Emb*_*eer 5 visual-studio-code vscode-tasks

我试图在 VSCode 的tasks.json 中定义我自己的环境变量。根据到目前为止我找到的每个链接,我尝试了以下操作:

{
"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
        }
    }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我需要这个,因为我们正在通过 python 脚本运行构建过程,因此我需要给它我想要构建的应用程序的名称。由于我还有用于测试、执行、调试等的 python 脚本,因此我更愿意在tasks.json 中仅更改应用程序名称一次,而不是在每个任务本身中更改应用程序名称。

根据指南,这应该可以按照我的方式进行,但在 powershell 控制台中, $APP_NAME 变量未被替换。而且在 cmd 和 bash shell 中它似乎都不起作用。

如果有人能给我任何帮助,我将非常感激。

pat*_*tew 3

在tasks.json 中设置的环境变量不会被${env:..}in拾取tasks.json,当作为参数提供给 shell 时也不会被替换。不过,您可以在 中添加自定义设置settings.json,并在tasks.jsonusing中引用这些设置${config:...}

例如 settings.json

{
    "APP_NAME": "myApp",
}
Run Code Online (Sandbox Code Playgroud)

tasks.json

{
"version": "2.0.0",
"type": "shell",
"options": {
    "env": {
        "APP_NAME": "${config:APP_NAME}"
    }
},
"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 ${config:APP_NAME}",
        "group": {
            "kind": "build",
            "isDefault": true
        }
    }
    ]
}
Run Code Online (Sandbox Code Playgroud)