Как вы управляете зависимостями задач через свойства в psake? - PullRequest
0 голосов
/ 03 апреля 2010

В 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?

Ответы [ 2 ]

2 голосов
/ 05 апреля 2010

OK. Я понимаю, что вы пытаетесь достичь сейчас. Вы можете сделать это через обычную PowerShell-фу.

$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 {}

Ключевым моментом здесь является использование обычной переменной PowerShell вместо использования свойства psake. НТН.

0 голосов
/ 04 апреля 2010

Это не тот случай использования, который мы когда-либо рассматривали при реализации psake. Изменение списка зависимостей в FullBuild кажется мне немного странным и неприемлемым. Вы можете сделать то же самое, передав список задач для запуска из командной строки.

./invoke-psake buildScript.ps1 Package, CoreFinalize

Или я что-то упустил?

...