0

MSBuild では、次のようにアイテム グループをターゲットに渡すことで、ターゲットの依存関係をデータ駆動できます。

<ItemGroup>
    <FullBuildDependsOn Include="Package;CoreFinalize"
                        Condition="@(FullBuildDependsOn) == ''" />
</ItemGroup>

<Target Name="FullBuild"
        DependsOnTargets="@(FullBuildDependsOn)" />

項目グループをオーバーライドしない場合FullBuildDependsOn、FullBuild ターゲットはデフォルトで Package および CoreFinalize ターゲットに依存します。ただし、独自の FullBuildDependsOn 項目グループを定義することで、これをオーバーライドできます。

私はpsakeで同じことをしたい - 例えば:

properties {
    $FullBuildDependsOn = "Package", "CoreFinalize"
}

task default -depends FullBuild

# this won't work because $FullBuildDependsOn hasn't been defined yet - the "Task" function will see this as a null depends array
task FullBuild -depends $FullBuildDependsOn 

psake でタスクの依存関係をデータ駆動するにはどうすればよいですか?

4

2 に答える 2

2

わかった。あなたが今達成しようとしていることを理解しています。これは、通常のPowerShell-fuを介して実行できます。

$FullBuildDependsOn = "Package"
Invoke-psake buildScript.ps1

buildScript.ps1:

if($FullBuildDependsOn -eq $Null) {
  $FullBuildDependsOn = "Package", "CoreFinalize"
}

properties {
  # Usual build properties here
}

task default -depends FullBuild

task FullBuild -depends $FullBuildDependsOn {}

task Package {}

task CoreFinalize {}

ここで重要なのは、psakeプロパティを使用するのではなく、通常のPowerShell変数を使用することです。HTH。

于 2010-04-05T18:57:43.900 に答える
0

これは、psake を実装するときに考慮したユース ケースではありません。FullBuild の依存関係のリストを変更することは、私には少し奇妙で維持できないように思えます。コマンドラインから実行するタスクのリストを渡すことで、同じことを実現できます。

./invoke-psake buildScript.ps1 Package, CoreFinalize

または、何か不足していますか?

于 2010-04-04T02:51:18.633 に答える