Visual studio code VSCode-一个任务可以调用另一个任务吗?

Visual studio code VSCode-一个任务可以调用另一个任务吗?,visual-studio-code,Visual Studio Code,Vscode版本:1.19.3 我想知道是否有一种方法可以让一个任务调用另一个任务,比如“启动前任务”,但可以用于常规任务 原因是,当我想调试代码时,我需要将可执行文件重新编译为最新版本,这样我就可以调用“preLaunchTask”CMakeTask,然后需要调用make来生成可执行文件 总体 是的,您可以自动调用其他语言的自定义脚本,但还不能调用C语言的自定义脚本 VS代码当前自动检测以下系统的任务:Gulp, 格朗特、杰克和npm。我们正在使用相应的扩展 作者希望添加对Maven和C#do

Vscode版本:1.19.3

我想知道是否有一种方法可以让一个任务调用另一个任务,比如“启动前任务”,但可以用于常规任务


原因是,当我想调试代码时,我需要将可执行文件重新编译为最新版本,这样我就可以调用“preLaunchTask”CMakeTask,然后需要调用make来生成可执行文件

总体

是的,您可以自动调用其他语言的自定义脚本,但还不能调用C语言的自定义脚本

VS代码当前自动检测以下系统的任务:Gulp, 格朗特、杰克和npm。我们正在使用相应的扩展 作者希望添加对Maven和C#dotnet命令的支持。如果 使用Node.js作为运行时开发JavaScript应用程序时 通常有一个package.json文件描述您的依赖项和 要运行的脚本

用于C(或其他自定义)

您需要在构建任务组中定义一个自定义任务,以便它在那里运行

并非所有任务或脚本都可以在工作区中自动检测到。 有时有必要定义自己的自定义任务。假设你 有一个脚本来运行测试,因为需要设置一些 正确的环境。脚本存储在内部的脚本文件夹中 Linux和macOS的工作区名为test.sh,Linux和macOS的工作区名为test.cmd 窗户。从全局任务菜单运行配置任务。这打开了 下面的选择器

只要系统识别要使用的二进制文件,并且可以是按顺序调用构建步骤的powershell、bash、batch等脚本,就可以执行完全任意的命令。这可以是一个列出其他命令的命令,也可以简单地将多个任意任务添加到此生成组

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run tests",
            "type": "shell",
            "command": "./scripts/test.sh",
            "windows": {
                "command": ".\\scripts\\test.cmd"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "reveal": "always",
                "panel": "new"
            }
        }
    ]
}
作为默认生成任务,它在触发运行生成任务(Ctrl+Shift+B)时直接执行

任务属性说明:

  • 标签:用户界面中使用的任务标签
  • 类型:任务的类型。对于自定义任务,可以是shell或进程。如果指定了shell,则该命令将被解释为shell命令(例如:bash、cmd或PowerShell)。如果指定了进程,则该命令将被解释为要执行的进程。如果使用shell,则命令的任何参数都应嵌入到命令属性中,以支持正确的参数引用。例如,如果测试脚本接受--debug参数,那么命令属性将是:./scripts/test.sh--debug
  • 命令:要执行的实际命令
  • windows:任何特定于windows的属性。在Windows操作系统上执行命令时,将使用而不是默认属性
  • :定义任务所属的组。在本例中,它属于测试组。可以通过从命令选项板运行运行测试任务来执行属于测试组的任务
  • 演示文稿:定义如何在用户界面中处理任务输出。在本例中,始终显示显示输出的集成终端,并在每次任务运行时创建一个新终端
链接任务是可能的。在任务部署中使用“dependsOn”:['Build']。


你可以让它取决于另一项任务。例如:

    {
        "label": "secondTask",
        "type": "shell",
        "command": "<Your second task's command here>",
        "dependsOn": [
            "firstTask"
        ]
    },
    {
        "label": "firstTask",
        "type": "shell",
        "command": "<Your first task's command here>"
    }
{
“标签”:“第二个任务”,
“类型”:“外壳”,
“命令”:”
}

这太完美了!我完全忘记了创建自己的shell脚本来处理所有繁重的工作。这肯定会帮我省下很多工作。这(或Badr Elmers)应该是公认的答案。我同意你的观点,因为你提供了一个例子。
dependsOn
最酷的一点是,您可以指定任务列表。更酷的是,您还可以使用
dependsOrder
来定义它们是按顺序执行还是并行执行。这对C/C++程序员来说非常好,因为你可以定义一个“构建”任务,一个“清理”任务,然后你可以创建一个“重建”任务,只说它取决于“清理”和“构建”任务。谢谢@user1593842,我不知道dependsOrder参数,它也很有用。正如你所说,我正在使用“maven build”,但在此之前,我正在运行一个“clean”作业。您好,您知道有没有办法使工作区任务依赖于用户任务?我找不到任何文档、链接或问题。我刚刚收到错误
无法解析工作区文件夹中的依赖任务“任务名称”
您的答案很好,请更新它并提供一个示例。