【问题标题】:VSCode: How can I execute an arbitrary task using the JavaScript API?VSCode:如何使用 JavaScript API 执行任意任务?
【发布时间】:2017-10-16 10:25:39
【问题描述】:

在较新版本的 VSCode 中,我可以为我在 tasks.json 中定义的任何任务创建绑定。例如,下面的 3 个任务

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Clean",
      "type": "shell",
      "command": "clean.cmd",
      "problemMatcher": []
    },
    {
      "label": "Build",
      "type": "shell",
      "command": "build.cmd",
      "problemMatcher": [],
      "group": { "kind": "build", "isDefault": true }
    },
    {
      "label": "Flash",
      "type": "shell",
      "command": "flash.cmd",
      "problemMatcher": []
    }
  ]
}

我可以用

创建键绑定
[
  {
    "key": "alt+f9",
    "command": "workbench.action.tasks.runTask",
    "args": "Clean"
  },
  {
    "key": "ctrl+f9",
    "command": "workbench.action.tasks.build"
  },
  {
    "key": "f9",
    "command": "workbench.action.tasks.runTask",
    "args": "Flash"
  }
]  

一切都按预期进行。我正在尝试使用 VSCode API 从扩展(例如Script Commands)中做同样的事情,但它仅适用于buildtest 任务。

打电话

vscode.commands.executeCommand("workbench.action.tasks.build")

有效但

vscode.commands.executeCommand("workbench.action.tasks.runTask", ["Clean"])

打开任务选择列表。

如何使用 JavaScript 代码直接启动 buildtest 之外的其他任务?

【问题讨论】:

    标签: visual-studio-code vscode-extensions vscode-tasks


    【解决方案1】:

    您的任务配置文件看起来很旧。如果您使用的是新版本的 Visual Studio Code,那么您应该升级。

    我认为 api 期望任务有一个“标签”字段。

    https://code.visualstudio.com/docs/editor/tasks#_convert-from-010-to-200

    所以:

    {
       "taskName": "Clean",
       "type": "shell",
       "command": "clean.cmd",
       "problemMatcher": []
    },
    

    应该是:

    {
      "label": "Clean",
      "type": "shell",
      "command": "clean.cmd",
      "problemMatcher": []
    },
    

    更新:尝试仅使用字符串调用它,而不是像这样将其包装在数组中:

    vscode.commands.executeCommand("workbench.action.tasks.runTask", "Clean")
    

    【讨论】:

    • 我已经升级,但它不会影响我的问题。labeltaskName(它仍然受支持),我可以从 UI 运行任务,但不使用 JavaScript API。不过,您的回答提醒我更新问题。谢谢。
    猜你喜欢
    • 2017-01-23
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多