Visual studio code 如何在VS Code on build中运行多个任务?

Visual studio code 如何在VS Code on build中运行多个任务?,visual-studio-code,vscode-tasks,Visual Studio Code,Vscode Tasks,使用tasks.jsonversion 2.0.0,我无法做到在构建应用程序时同时运行多个任务。我正在使用gulp进行SCSS编译,并且运行我的Compile/minify cms.SCSS任务本身工作正常,因此任务本身没有问题,只是VS code的任务运行程序。当我在VS代码中运行构建任务时,我的gulp任务没有运行,即使它有“组”:“Build”-只有dotnet一个是 tasks.json { “版本”:“2.0.0”, “任务”:[ { “标签”:“构建”, “命令”:“dotnet”,

使用
tasks.json
version 2.0.0,我无法做到在构建应用程序时同时运行多个任务。我正在使用gulp进行SCSS编译,并且运行我的
Compile/minify cms.SCSS
任务本身工作正常,因此任务本身没有问题,只是VS code的任务运行程序。当我在VS代码中运行构建任务时,我的gulp任务没有运行,即使它有
“组”:“Build”
-只有
dotnet
一个是

tasks.json
{
“版本”:“2.0.0”,
“任务”:[
{
“标签”:“构建”,
“命令”:“dotnet”,
“类型”:“过程”,
“args”:[
“建造”,
“${workspaceFolder}/HpsCoreWeb.csproj”
],
“problemMatcher”:“$msCompile”,
“集团”:{
“种类”:“建造”,
“isDefault”:正确
}
},
{
“标签”:“编译/缩小cms.scss”,
“类型”:“吞咽”,
“任务”:“cms.scss:cms.min.css”,
“problemMatcher”:“$node sass”,
“组”:“构建”
}
]
}
根据报告:

:定义任务所属的组。在本例中,它属于
测试
组。属于测试组的任务可以通过从命令调色板运行运行测试任务来执行


dotnet build
任务成功了,那么另一个任务(也是
build
组的一部分)不也应该运行吗?我做错了什么?

再次检查您的设置是否启用了自动吞咽检测:

“自动检测”:“打开”
问题在于“运行测试任务”和“运行构建任务”并没有执行该特定组中的所有任务。通常,您会得到一个下拉选择,以便选择要执行的任务。由于已将其中一个任务指定为默认任务,因此将跳过选择,而执行默认任务

您可以通过添加依赖项来解决这个问题。以以下为例:

{
“版本”:“2.0.0”,
“任务”:[
{
“标签”:“回声1”,
“命令”:“回声”,
“类型”:“外壳”,
“args”:[“echo1”],
“集团”:{
“种类”:“建造”,
“isDefault”:正确
},
“dependsOn”:[“Echo 2”]
},
{
“标签”:“Echo 2”,
“类型”:“外壳”,
“命令”:“回声”,
“args”:[“echo2”],
“组”:“构建”
}
]
}
由于
Echo 1
取决于
Echo 2
Echo 2
将在执行
Echo 1
之前执行。请注意,该定义是一个列表,因此可以指定多个任务。在这种情况下,任务是并行执行的


在您的情况下,添加
“dependsOn”:[“Compile/minify cms.scss”]
到您的主构建任务应该同时执行这两个任务。

package.json中添加“gulp load plugins”插件

var gulpLoadPlugins=require('gulp-load-plugins'),
plugins=gulpLoadPlugins();
要了解该插件的更多信息,请参阅您可以使用的

下面的示例在调用“Build”任务时执行“Client Build”和“Server Build”任务

{
“版本”:“2.0.0”,
“任务”:[
{
“标签”:“客户端构建”,
“命令”:“吞咽”,
“args”:[“构建”],
“选择”:{
“cwd”:“${workspaceFolder}/client”
}
},
{
“标签”:“服务器构建”,
“命令”:“吞咽”,
“args”:[“构建”],
“选择”:{
“cwd”:“${workspaceFolder}/server”
}
},
{
“标签”:“构建”,
“dependsOn”:[“客户端构建”、“服务器构建”]
}
]
}

我真正的项目实际上有更多的吞咽任务。这是否意味着我必须基本上将它们“菊花链”在一起(
dotnet build
取决于
gulp1
,这取决于
gulp2
,等等),才能让它们全部运行?如果它能工作,它也能工作,但令人惊讶的是,他们没有办法在定义的组中异步执行所有任务,而不定义错误的依赖项。@JacobStamm这不是对你问题的回答,但是如果你已经在使用gulp,那么在那里对任务进行分组应该是非常简单的。事实上,我希望gulp的
默认值
会包含对这些任务的引用。@jacob stamm不需要菊花链,您可以将它们作为依赖项添加到一个任务中。但我很确定它们仍然不是并行运行的。另一种解决方案是编写一个batchfile/shellscript并调用它。到目前为止(v1.27.2),我还不知道有什么更好的方法可以在VS代码中实现它。如果它让你很烦恼,你也可以在github上提交一个特性请求。开发人员通常响应速度非常快。@G.G,因此
dotnet build
任务的
dependsOn
将是
[“gulp1”,“gulp2”]
等。我相信解决方法是:)异步性会很好,但这确实满足了我的问题。我很可能会在VS Code的repo中为此功能提交一个GitHub问题。我已经确认,在dependsOn中列出多个任务碰巧我的示例使用了gulp,它的自动检测将消除在构建时重新运行gulp任务的需要。但我的问题更多的是关于如何在构建中运行多个任务,不管它们是什么类型的任务。