【问题标题】:Conditional tasks in visual studio codeVisual Studio 代码中的条件任务
【发布时间】:2019-07-02 12:35:10
【问题描述】:

我正在尝试创建分层任务结构。由于这个项目目前有超过 100 个任务,我们需要通过使用“子任务”或inputs 作为其在 vs 代码中的调用来简化其结构,以获得对我们任务的更多可见性。

考虑这个例子(下面提供的代码):

Run Task -> option(s) --> sub-options 
            option    --> sub-options

我最理想的情况是:

Run "myTask" -> option(s) --> sub-options based on previous
                          |
                          |--> sub-options based on previous
                          | 
                          |--> sub-options based on previous

假设我选择Run Task -> Option1 -> avaliable sub-options for option1

我想有条件地查看“父母”的选项。

真实世界场景:

[Build Customer] Task -> CustomerName  -> Avaliable products for customer
                      -> CustomerName2 -> Avaliable products for customer2

tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "myTask",
      "type": "shell",
      "command": ".\\AutoBuild.bat",
      "options": {
        "shell": {
          "executable": "powershell.exe"
        },
        "cwd": "${workspaceFolder}",
      },
      "args": [
        "${input:myArg1}",
        "${input:myArg2}"
      ], 
      "group": "build",
      "problemMatcher": []
    }
  ],
  "inputs": [
    {
      "type": "pickString",
      "id":"myArg1",
      "options": [
        "option1",
        "option2",
        "option3",
        "option4"
      ],
      "description": "myArg1",
      "default": ""
    },
    {
      "type": "pickString",
      "id":"myArg2",
      "description": "myArg2",
      "options": [
        "sub-option1",
        "sub-option2",
        "sub-option3",
        "sub-option4"
      ],
      "default": ""
    },
  ]
}

这有可能以某种方式实现吗?

丑陋的或概念验证解决方案是受欢迎的!

【问题讨论】:

    标签: visual-studio-code vscode-tasks


    【解决方案1】:

    不幸的是,像keybindings'“when”这样的扩展没有条件属性。解决方法是执行一个脚本文件,可以对输入进行操作。例如:

    {
      "version": "2.0.0",
      "tasks": [
        {
          "label": "myTask",
          "type": "shell",
          "command": ".\\AutoBuild.bat",
          "args": [
            "${input:myArg1}",
            "${input:myArg2}"
          ]
        }
      ]
    }
    

    AutoBuild.bat 将有逻辑来测试和操作 myArg1myArg2

    【讨论】:

    • 很遗憾,这不是问题的答案。
    • 知道不能在tasks.json 中做条件句是有价值的。
    • 我的意思是,你在代码方面的建议,我已经提供了。
    • 公平声明。我想这只是证实了任务不应该做太多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多