是否可以将参数传递给Visual Studio Code中的任务

时间:2017-08-09 06:00:40

标签: visual-studio-code vscode-tasks

以下是我的tasks.json

的示例
{
  "version": "0.1.0",
  "tasks": [
    {
      "taskName": "test",
      "suppressTaskName": true,
      "command": "python",
      "args": [
        "tests/brewer_tests.py"
      ],
      "isTestCommand": true
    }
  ]
}

我可以使用shift+cmd+alt+b运行此功能。我也可以使用alt+t运行它,然后从菜单中选择它。是否可以在该菜单中传递其他参数?例如 enter image description here

你可以将它构建到你的任务中:

{
  "version": "0.1.0",
  "tasks": [
    {
      "taskName": "test",
      "suppressTaskName": true,
      "command": "python",
      "args": [
        "tests/brewer_tests.py",
        $arg1                        # would resolve to "ARG1"
      ],
      "isTestCommand": true
    }
  ]
}

或类似的东西?

3 个答案:

答案 0 :(得分:9)

到目前为止,我一直使用this answer以来的解决方案,但是由于Visual Studio Code现在有一个official support for task prompts,因此我将其添加为答案。

在task.json文件中,将密钥inputs添加到tasks旁边。此项包含具有所有可能参数的数组。请注意,并非每个任务都必须使用所有这些输入。
所有这些输入都有一个id,您将用它来引用任务中的输入。
现在,在任务中,您只需要在需要参数的地方添加${input:myInputId}

示例:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Echo param",
            "type": "shell",
            "command": "echo ${input:param1}",
            "problemMatcher": []
        },
        {
            "label": "Echo without param",
            "type": "shell",
            "command": "echo Hello",
            "problemMatcher": []
        },
    ],
    "inputs": [
        {
            "id": "param1",
            "description": "Param1:",
            "default": "Hello",
            "type": "promptString"
        },
    ]
}

任务Echo param将打开一个提示,您可以输入一个字符串值,然后打印该值。任务Echo without param只会打印“ Hello”。

答案 1 :(得分:4)

这是目前对我有用的-使用它来运行带有自定义参数的golang代码段。 如果为此添加键盘映射,则过程非常简单。

到目前为止,仅在Windows下对此进行了测试-出于这个原因,Linux版本已被注释掉

{
        "label": "runwithargs",
        "type": "shell",
        "windows": {
            "options": {
                "shell": {
                    "executable": "powershell.exe",
                    "args": [
                        "-NoProfile",
                        "-ExecutionPolicy",
                        "Bypass",
                        "-Command"
                    ]
                }
            },
            "command": "",
            "args": [
                { "value": "$cmdargs = read-host 'Enter command line arguments';", "quoting": "weak"},
                { "value": "go run ${file} $cmdargs", "quoting": "weak"}
            ]
        },
        /*"linux": {
            "command": "echo 'Enter command line arguments: '; read cmdargs;",
            "args": [ "go run ${file} $cmdargs" ]                
        },*/          
        "presentation": {
            "panel": "dedicated",
            "focus": true
        }
    }

答案 2 :(得分:4)

关于Input variablesVSCode 1.43 (Feb. 2020)添加了一项新功能:

提示字符串密码输入

promptString”类型“ input”可以具有"password": true将导致显示的快速输入使输入的内容(如密码)模糊