2010-04-03 2 views
0

당신이 데이터과 같이, 대상으로 항목 그룹을 전달하여 대상 종속성을 구동 할 수 있습니다 :psake의 속성을 통해 데이터 구동 작업 종속성은 어떻게됩니까? MSBuild에서에서

<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

확인. 네가 지금 성취하려는 것을 이해한다. 일반 PowerShell-fu를 통해이 작업을 수행 할 수 있습니다. buildScript.ps1에서

$FullBuildDependsOn = "Package" 
Invoke-psake 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.

+0

네, 그럴 수 있다고 생각했습니다. 내가 보지 못했던 psake 속성 시스템을 통해이를 지원할 방법이 있는지 궁금해했습니다. 감사! – Jordan

0

psake를 구현할 때 고려한 유스 케이스는 아닙니다. FullBuild의 종속성 목록을 변경하는 것은 약간 이상하고 내게 유지하기 어렵게 보입니다. 명령 행에서 실행할 태스크 목록을 전달하여 동일한 결과를 얻을 수 있습니다.

./invoke-psake buildScript.ps1 Package, CoreFinalize 

또는 뭔가 빠졌습니까?

+0

나는 당신이 그것을 할 수 있음을 알고있었습니다. 나는 속성에 의한 작업 종속성을 이끌어 내고 싶다. 그렇게하면 작업간에 표준 종속성 집합을 가질 수 있으며 필요에 따라이를 재정의 할 수 있습니다. 재사용 가능한 빌드 스크립트를 구축하고 있으며 컨벤션 오버 구성 접근법을 사용하려고하지만 여전히 구성 옵션을 사용하고자합니다. – Jordan

관련 문제