在 Cakebuild 中创建任务序列

Create a task sequence in Cakebuild

我正在使用 Cake 0.23.0,很高兴看到任务依赖项已扩展。不幸的是,即使是最新版本似乎也无法解决我的问题。 还是我做错了什么?

我想达到的目标

当前行为 结果序列是 任务初始化 x86 -> 任务 A -> 任务 B -> 任务 C -> 任务初始化 x64

Cake 似乎只尊重任务依赖一次。我已将其定义如下所示:

Task("Compile-All-Platforms")
  .IsDependentOn("Init-86")  
  .IsDependentOn("A")
  .IsDependentOn("B")
  .IsDependentOn("C")
  .IsDependentOn("Init-x64")
  .IsDependentOn("A")
  .IsDependentOn("B")
  .IsDependentOn("C");

如果你想分两步构建,最简单的方法是将 A、B 和 C 的构建逻辑封装在辅助函数中,然后将它们包装在 x86 或 x64 任务中。这里的想法是利用 Cake 能够为您创建的依赖关系树,而不是在 Compile-All 中写下所有依赖关系。实际上,这就是您要使用构建协调器的主要原因。

当然,这是让它适用于 3 个任务和 2 个平台的直接方法。一个更具可扩展性的解决方案是创建和添加或接受 "platform" 参数并构建 N 个项目的帮助脚本。

请注意,下面的代码仅显示如何完成您的要求,但需要使用适当的 WithCriteria 说明进行改进。如果按原样使用,将无法仅构建 x64。

Task("Compile-x86"){ 
    BuildA(); 
    BuildB(); 
    BuildC();
 }; 

 Task("Init-x64")
    .IsDependentOn("Compile-x86"){ 
    //Your init code goes here 
 }; 

 Task("Compile-x64")
    .IsDependentOn("Init-x64"){ 
    BuildA(); 
    BuildB();
    BuildC();
 }; 

 Task("Compile-All-Platforms")
 .IsDependentOn("Compile-x64");