rksoftware

Visual Studio とか C# とかが好きです

CakeBuild でタスクの依存を扱う

Cake は C# Make なのでタスク間に依存関係が欲しいところです。「A タスクを実行するには B タスクがその前に実行されていなければならない」みたいな。
IsDependentOn メソッドで実現します。

■ 今回実行するコード

var target = Argument("target", "Default");

Task("Default").Does(() =>{ Information("Hello World!"); });

Task("cs").Does(() => { Information("Hello C#!"); });

Task("both")
    .IsDependentOn("Default")
    .IsDependentOn("cs")
    .Does(() => { Information("Hello C# World!"); });

RunTarget(target);

Defaultcsboth の3つのタスクを定義しています。
その中で both

    .IsDependentOn("Default")
    .IsDependentOn("cs")

と、Defaultcs が事前に実行されるようにしています。

both を実行してみる

>.\tools\Cake\Cake -target=both

========================================
Default
========================================
Hello World!

========================================
cs
========================================
Hello C#!

========================================
both
========================================
Hello C# World!

Task                          Duration
--------------------------------------------------
Default                       00:00:00.0174976
cs                            00:00:00.0070091
both                          00:00:00.0124768
--------------------------------------------------
Total:                        00:00:00.0369835

both タスクを実行すると、狙い通りに Defaultcsboth と順に実行されました。

※CakeBuild を試してみた記事の目次です。