2009-07-11 5 views
14

단일 xml 파일에 여러 대상을 설정했습니다. 모든 타겟이 실행되기를 기대하지만 프리스트 타겟 만 실행됩니다. 여기 MSBuild가 여러 대상을 실행하지 않는 이유는 무엇입니까?

는 스피가 시도 무엇의 단순화 된 버전입니다 :

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="T1"> 
    <Copy SourceFiles="c:\temp\a.txt" DestinationFolder="C:\temp2\" />  
    </Target> 
    <Target Name="T2"> 
    <Copy SourceFiles="c:\temp\b.txt" DestinationFolder="C:\temp2\" />  
    </Target> 
</Project> 

인 TeamCity CI 서버에서 빌드 및 로그 보고서 프로세스 종료 코드 실행 I'am : 0

누구나 얻었다을 어떤 아이디어가 T2를 실행하지 않는 이유는 무엇입니까?

답변

28

당신은

은 MSBuild를 사용하면 기본 대상을 정의 할 수 있습니다

<Target Name="Build" DependsOnTargets="T1; T2"> 
</Target> 
+2

포인터를 가져 주셔서 감사합니다. 실제로는 다음과 같이 지정하여 작업하게 만들었습니다.

+0

종속 대상은 표시된대로 쉼표가 아닌 세미콜론으로 구분해야합니다. 예 : Kildareflare

17

을 시도하여 여러 대상에 대한 MSBuild를 말할 필요하고 그것은 당신이 당신의 목표 사이에 종속성을 정의 할 수 있습니다. 기본값이 정의되지 않은 경우, 발견 된 첫 x 째를 실행합니다. DefaultTargets를 사용하여 다음을 호출 할 수 있습니다.

<Project DefaultTargets="T1;T2"> 

목표는 잘 정의 된 모든 단계를 수행해야합니다. 예를 들어 Clean 타겟은 프로젝트를 정리하는 데 필요한 모든 파일과 폴더를 제거합니다. 등 모든 DLL을 컴파일 할 컴파일

일반적으로 자신의 종속성을 선언해야합니다 귀하의 목표 :

<Target Name="CI" DependsOnTargets="T1, T2"> 
</Target> 

그렇지 않으면 실행하려는 모든 개별 단계를 포함해야합니다 대상 :

<Target Name="XX"> 
    <CallTarget Targets="T1"/> 
    <CallTarget Targets="T2"/> 
</Target> 
2

MSBuild는이 순서를 사용하여 어떤 대상을 실행해야하는지 결정합니다. 값이 발견되면 거기에서 멈추어 실행을 시작합니다.

  • 타겟 (들)이 DefaultTargets 포함 MSBuild.exe를
  • 표적을 (들)에/T는 스위치를 사용하여 지정이 발견된다 프로젝트 요소
  • 제 타겟에 속성 이전의 주석이 다른 대상은 그 대상 전에 먼저 실행해야 할 DependsOnTargets 목록을 사용할 수 있습니다 언급 한 바와 같이 (약간 실제로 morecomplicated ) 스크립트

을 구축 할 수 있습니다.

솔루션 정보 AfterTargets은 MSBuild 4.0에서만 사용할 수 있으므로 이전 버전에서는 작동하지 않습니다.

사예드 이브라힘 하시

내 도서 :로 BuildDependsOn

<PropertyGroup> 
     <BuildDependsOn>T1;T2</BuildDependsOn> 
</PropertyGroup> 

그리고 의 값을 전달 : Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

0

는 또한 모든 종속 목표를 정의하는 속성 그룹을 만들 수 있습니다 아래에 표시된 매개 변수 :

<Target Name="Build" DependsOnTargets="@(BuildDependsOn)"/> 

이 방법을 사용하면이 프로젝트 파일 외부에서 종속 목록을 수정하여 다른 필수 단계를 주입 할 수 있습니다. 자세한 내용은 site을 참조하십시오.

관련 문제