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

时间:2018-10-24 07:43:30

标签: visual-studio-code vscode-tasks

我试图在VSCode中的task.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脚本,因此我希望只在task.json中更改一次应用程序名称,而不是在每个任务本身中更改一次。

根据指南,这应该可以按照我的方式进行,但是在Powershell控制台中,不会替换$ APP_NAME变量。同样在cmd和bash外壳中似乎都没有作用。

我非常感谢别人能给我任何帮助。

3 个答案:

答案 0 :(得分:2)

在您的情况下使用$env:APP_NAME。参见referencing environment variables

  

环境变量

     

您还可以通过${env:Name}引用环境变量   语法(例如${env:PATH})。

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您的用法有误,原因有1。

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

  

选项:覆盖cwd(当前工作目录)的默认设置,   env(环境变量)或shell(默认shell)。选项可以是   为每个任务设置,也可以在全局或每个平台设置。环境变量   此处配置的文件只能从您的任务脚本中引用,或者   流程,如果它们是您的参数的一部分,将无法解决,   命令或其他任务属性。

See options

尝试删除对./scripts/build_app.py脚本中第一个参数的引用作为$APP_NAME的值,而应在os.environ['APP_NAME']脚本中使用./scripts/build_app.py