有没有办法使用 VSCodetasks.jsondependsOn 添加其他项目的依赖项

Sim*_*fie 11 visual-studio-code vscode-tasks

我有一个多根工作区,其中包含多个项目。每个项目都有自己的构建任务,调用外部脚本来进行构建。一个项目要求在构建它之前构建所有其他项目,因为需要链接到它们。从现在起我将其称为“应用程序”项目。

我尝试在应用程序的tasks.json构建配置中使用dependsOn,但是如果指定了命令,则引用外部构建任务的名称不起作用,如果未指定命令,则会引发错误。例如:

  {
      "label": "build-app",
      "group": "build",
      "dependsOn": [
          "devices"
           "app",
      ],
      "dependsOrder": "sequence",
      "problemMatcher": []
  }
Run Code Online (Sandbox Code Playgroud)

即使任务“devices”确实存在并且在devices/tasks.json文件中工作,也会出现此错误:

Couldn't resolve dependent task 'devices' in workspace folder 'file:///home/simon/git-repos/workspace/app'
Run Code Online (Sandbox Code Playgroud)

现在这表明它不会在当前工作区文件夹之外进行搜索,因此我尝试在 .code-workspace 文件中创建顶级“工作区”任务并引用其中的构建任务:

  {
      "label": "build-app",
      "group": "build",
      "dependsOn": [
          "devices"
           "app",
      ],
      "dependsOrder": "sequence",
      "problemMatcher": []
  }
Run Code Online (Sandbox Code Playgroud)

这会导致类似的错误:

Couldn't resolve dependent task 'devices' in workspace folder 'file:///home/simon/git-repos/workspace/app.code-workspace'
Couldn't resolve dependent task 'app' in workspace folder 'file:///home/simon/git-repos/workspace/app.code-workspace'
Run Code Online (Sandbox Code Playgroud)

现在看起来它没有在 .code-workspace 文件之外搜索。

我可以通过一些技巧让它按照我想要的方式工作,但我必须将文件app/tasks.json更改目录中的所有任务指定为依赖项项目,并为每个任务指定问题匹配器“相对路径”。例如:

    {
        "type": "shell",
        "label": "devices",
        "command": "cd ${workspaceFolder}/../devices && ./build.py",
        "problemMatcher": {
            "base": "$gcc",
            "fileLocation": ["relative", "${workspaceRoot}/../devices"]
        },
        "group": "build",
    },
Run Code Online (Sandbox Code Playgroud)

这一切都很好,因为我现在可以做我想做的事情并创建构建依赖项,但任务定义不在正确的位置。它们都在而app/tasks.json不是在每个项目自己的tasks.json. 看来逻辑是错误的。

我检查了https://code.visualstudio.com/docs/editor/tasks-appendix上的tasks.json 架构 ,看看是否有可以在dependsOn条目上设置的额外参数,甚至没有提到dependsOnor dependsOrder

有没有办法在各个项目文件中配置任务并在另一个项目或顶级工作区配置中的任务tasks.json中引用它们?dependsOn

在哪里可以找到tasks.json 文件的完整架构?或者用于读取该文件的代码?

西蒙.