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

Visual studio code VSCode:找不到任务中的环境变量,visual-studio-code,vscode-tasks,Visual Studio Code,Vscode Tasks,我试图在VSCode中的tasks.json中定义自己的环境变量。根据迄今为止我找到的每个链接,我尝试了以下方法: { "version": "2.0.0", "type": "shell", "options": { "env": { "APP_NAME": "myApp" } }, "problemMatcher": { "owner": "cpp", "fileLocation": [ "relative",

我试图在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
        }
    }
    ]
}
我之所以需要它,是因为我们正在通过python脚本运行构建过程,因此我需要为它提供我想要构建的应用程序的名称。由于我还有用于测试、执行、调试等的python脚本,所以我更愿意在tasks.json中只更改一次应用程序名称,而不是在每个任务本身中

根据指导原则,这应该以我的方式实现,但在powershell控制台中,$APP_NAME变量未被替换。而且无论是在cmd还是bashshell中,它似乎都不起作用


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

如果您使用的是powershell,请使用
%VAR%
而不是
$VAR

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

在您的案例中使用
$env:APP_NAME
。看

环境变量

您还可以通过
${env:Name}
语法(例如,
${env:PATH}

注意:请确保与环境变量名称的大小写匹配,例如 Windows上的示例
${env:Path}


由于一个特定原因,您的用法不正确

tasks.json
options
对象中使用的环境变量不能在tasks其他属性中引用,特别是在OPs情况下的
command

选项:覆盖cwd(当前工作目录)的默认值, env(环境变量)或shell(默认shell)。选项可以是 按任务设置,但也可按全局或平台设置。环境变量 此处配置的只能从任务脚本中引用,或 如果它们是args的一部分,则不会解决, 命令或其他任务属性


尝试删除对
/scripts/build_app.py
脚本中第一个参数的引用,将其作为
$app_NAME
的值,改为在
/scripts/build_app.py
脚本中从内部使用
os.environ['app_NAME']
。tasks.json中设置的环境变量不会被
{env:}拾取
tasks.json中的
,当它们作为shell参数提供时,也不会被替换。但是,您可以在
settings.json
中添加自定义设置,并使用
${config:…}
引用
tasks.json
中的设置

e、 g。
settings.json

{
    "APP_NAME": "myApp",
}
{
"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
        }
    }
    ]
}
tasks.json

{
    "APP_NAME": "myApp",
}
{
"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
        }
    }
    ]
}

谢谢你的快速回复。不幸的是,我已经试过了,但也不起作用(至少在powershell中)