2010-04-03 3 views
0

В MSBuild вы можете управлять данные целевых зависимостями, передавая группу элементов в мишень, например, так:Как вы зависите от задачи на диске данных через свойства в psake?

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

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

Если вы не переопределить группу FullBuildDependsOn элемента, целевое FullBuild по умолчанию в зависимости от пакета и 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

OK. Я понимаю, чего вы пытаетесь сделать сейчас. Вы можете сделать это с помощью обычного 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 {} 

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

+0

Да, я решил, что смогу это сделать. Просто задавался вопросом, есть ли способ поддержать его через систему свойств psake, которую я не видел. Благодаря! – Jordan

0

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

./invoke-psake buildScript.ps1 Package, CoreFinalize 

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

+0

Я знал, что вы можете это сделать. Я хотел бы управлять зависимостями задач по свойствам. Таким образом, у меня может быть стандартный набор зависимостей между задачами, а затем можно переопределить их по мере необходимости. Я создаю сценарий с возможностью повторного использования, и я пытаюсь использовать подход, основанный на соглашениях, но я все же хочу включить параметры конфигурации. – Jordan