【问题标题】:How to pass input variable from launch.json to tasks.json in vscode如何将输入变量从launch.json传递到vscode中的tasks.json
【发布时间】:2021-09-02 10:38:35
【问题描述】:

我可以在launch.json 中使用来自launch.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
      ]
    }
  ]
}

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

【问题讨论】:

    标签: visual-studio-code vscode-tasks


    【解决方案1】:

    您可以使用扩展名Command Variable v1.21.0

    它有一个命令extension.commandvariable.promptStringRemember,其行为与${input:name} promptString 变量相同。通过添加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" }
        }
      ]
    }
    

    【讨论】:

    • 您好,感谢您的回答和扩展。您展示的示例与我的问题不匹配。我想从lauch.json 获取输入,这些输入将用于lauch.jsontasks.json。此外,从给定的示例中,promptStringRememberrememberPick 之间的区别对我来说并不清楚。与我的问题相关的示例将非常有帮助。再次感谢。
    • @Mr.EU 如果这解决了您的问题,请将此答案标记为解决方案
    【解决方案2】:

    根据@rioV8 的回答,我编辑了我的json 文件,如下所示:

    launch.json:

    "configurations": [
      {
        ...
        "args": [${input:file_no}]
        "preLanuchTask": "runPreTasks"
        ...
      }
    ],
    "inputs": [
      {
        "id": "file_no",
        "type": "command",
        "command": "extension.commandvariable.promptStringRemember",
        "args": {
          "key": "lastnumber",
          "description": "Enter the number"
        }
      }
    ]
    

    tasks.json:

    {
      "version": "2.0.0",
      "tasks":[
        {
          "label": "runPreTasks",
          "type": "shell",
          "command": sh,
          "args": [
            "/path2script/scriptName.sh",
            "${input:file_no}"    
          ]
        }
      ]
      "inputs": [
        {
          "id": "file_no",
          "type": "command",
          "command": "extension.commandvariable.rememberPick",
          "args": { "key": "lastnumber" }
        }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 2020-01-20
      • 1970-01-01
      • 2012-09-22
      • 2023-03-09
      相关资源
      最近更新 更多