首页 > 解决方案 > 如何将输入变量从launch.json传递到vscode中的tasks.json

问题描述

我可以使用来自in 的输入变量launch.jsonlaunch.json

"configurations": [
  {
    ...
    "args": [${input:file_no}]
    "preLanuchTask": "runPreTasks"
    ...
  }
],
"inputs": [
  {
    "id": "file_no",
    "type": "promptString"
  }
]

现在,我想在不再次输入输入的情况下访问同一个变量tasks.json

{
  "version": "2.0.0",
  "tasks":[
    {
      "label": "runPreTasks",
      "type": "shell",
      "command": sh,
      "args": [
        "/path2script/scriptName.sh",
        "${input:file_no}"    // This does not work, without defining input again
      ]
    }
  ]
}

launch.json有没有办法tasks.json在 vscode中传递输入变量?

标签: visual-studio-codevscode-tasks

解决方案


您可以使用扩展命令变量v1.21.0

它有一个与promptString 变量extension.commandvariable.promptStringRemember行为相同的命令。${input:name}通过添加key属性,结果将保存在此键下,您可以使用extension.commandvariable.rememberPick命令检索它。

extension.commandvariable.rememberPick命令可用于与extension.commandvariable.promptStringRemember命令不同的任务/启动

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Task 1",
      "type": "shell",
      "command": "dostuff1",
      "args": ["-p", "${input:promptPath}"]
    },
    {
      "label": "Task 2",
      "type": "shell",
      "command": "dostuff2",
      "args": ["-p", "${input:rememberPath}"]
    },
    {
      "label": "Do Task 1 and 2",
      "dependsOrder": "sequence",
      "dependsOn": ["Task 1", "Task 2"],
      "problemMatcher": []
    }
  ],
  "inputs": [
    {
      "id": "promptPath",
      "type": "command",
      "command": "extension.commandvariable.promptStringRemember",
      "args": {
        "key": "path",
        "description": "Enter a path"
      }
    },
    {
      "id": "rememberPath",
      "type": "command",
      "command": "extension.commandvariable.rememberPick",
      "args": { "key": "path" }
    }
  ]
}

推荐阅读