我试图在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外壳中似乎都没有作用。
我非常感谢别人能给我任何帮助。
答案 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)。选项可以是 为每个任务设置,也可以在全局或每个平台设置。环境变量 此处配置的文件只能从您的任务脚本中引用,或者 流程,如果它们是您的参数的一部分,将无法解决, 命令或其他任务属性。
尝试删除对./scripts/build_app.py
脚本中第一个参数的引用作为$APP_NAME
的值,而应在os.environ['APP_NAME']
脚本中使用./scripts/build_app.py
。