사용자 지정 가능한 Team Foundation Build 대상

MSBuild 대상은 MSBuild 프로젝트가 빌드되는 방식을 정의합니다. Microsoft.TeamFoundation.Build.targets 파일은 대상 계층을 정의합니다. 또한 모든 Team Foundation Build 형식에 사용되는 Team Foundation Build에 대한 미리 정의된 MSBuild 작업 및 대상 집합을 정의합니다. 빌드 정의에는 TfsBuild.proj라는 프로젝트 파일이 있습니다. 프로젝트 파일은 하나의 빌드 정의에만 연결하거나, 여러 빌드 정의에 연결할 수 있습니다. TfsBuild.proj는 Microsoft.TeamFoundation.Build.targets 파일을 가져오고 여러 가지 속성 및 항목 그룹에 대한 값을 제공합니다. TfsBuild.proj 파일을 사용자 지정하여 계층 구조에서 확장 지점 대상 중 일부를 재정의할 수 있습니다. 대상 파일은 빌드 에이전트의 <root>:\Program Files\MSBuild\Microsoft\VisualStudio\TeamBuild에 있습니다.

중요

Microsoft.TeamFoundation.Build.targets 파일을 수정하지 마십시오.

MSBuild 대상에 대한 자세한 내용은 MSBuild 대상을 참조하십시오.

작업을 추가하여 사용자 지정할 수 있는 대상

작업은 대상에 포함되어 있습니다. 작업은 빌드 프로세스를 진행하는 동안 실행되는 코드를 제공합니다. 다음 표에서는 확장성을 위해 정의된 Team Foundation Build 대상을 모두 보여 줍니다. 빌드 프로세스 도중 사용자 지정 작업을 실행할 시기에 따라 다음 대상 중 하나에 사용자 작업을 삽입합니다.

참고

다른 대상은 재정의하지 않는 것이 좋습니다.

대상 이름

설명

BeforeEndToEndIteration

빌드 프로세스를 시작할 때 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterEndToEndIteration

빌드 프로세스를 끝낼 때 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

BeforeInitializeWorkspace

작업 영역을 초기화하기 전에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterInitializeWorkspace

작업 영역을 초기화한 후에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

BuildNumberOverrideTarget

빌드 번호를 사용자 지정하거나 위치 속성을 저장하려면 이 대상에 작업을 삽입합니다. 사용자가 작성한 작업에서 BuildNumber라는 출력 속성을 만들어야 합니다.

BeforeClean

정리 작업이 시도되기 전에 호출됩니다. 정리 전 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterClean

정리 작업이 완료된 후에 호출됩니다. 정리 후 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

BeforeGet

소스 제어에서 소스가 검색되기 전에 호출됩니다. 소스가 검색되기 전에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterGet

소스가 검색된 후에 호출됩니다. 소스가 검색된 후에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

BeforeLabel

소스에 레이블이 적용되기 전에 호출됩니다. Label 대상이 실행되기 전에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterLabel

레이블 적용이 완료된 후에 호출됩니다. Label 대상이 실행된 후에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

BeforeCompile

컴파일이 시작되기 전에 호출됩니다. 코드 파일이 컴파일되기 전에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

BeforeCompileConfiguration

개별 구성을 컴파일하기 전에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

BeforeCompileSolution

개별 솔루션을 컴파일하기 전에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterCompileSolution

개별 솔루션을 컴파일한 후에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterCompileConfiguration

개별 구성을 컴파일한 후에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterCompile

컴파일이 완료된 후에 호출됩니다. 코드 파일이 컴파일된 후에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

BeforeGetChangesetsAndUpdateWorkItems

변경 집합을 연결하고 작업 항목을 업데이트하기 전에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterGetChangesetsAndUpdateWorkItems

변경 집합을 연결하고 작업 항목을 업데이트한 후에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

BeforeTest

테스트가 실행되기 전에 호출됩니다. Test 대상이 실행되기 전에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

BeforeTestConfiguration

개별 구성을 테스트하기 전에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterTestConfiguration

개별 구성을 테스트한 후에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterTest

테스트가 완료된 후에 호출됩니다. Test 대상이 실행된 후에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

BeforeDropBuild

빌드 이진 파일, 빌드 로그 파일 및 테스트 결과가 릴리스 서버의 빌드 저장 디렉터리에 저장되기 전에 호출됩니다. 빌드 파일이 빌드 저장 디렉터리에 저장되기 전에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterDropBuild

빌드된 이진 파일과 테스트 결과를 릴리스 서버에 저장한 후에 호출됩니다. 빌드 파일이 빌드 저장 디렉터리에 저장된 후에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

BeforeCreateWorkItem

작업 항목을 만들기 전에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterCreateWorkItem

작업 항목을 만든 후에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

BeforeOnBuildBreak

빌드 중단으로 인해 작업 항목을 만들기 전에 호출됩니다. BuildBreak 대상이 실행되기 전에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

AfterOnBuildBreak

빌드 중단으로 인해 작업 항목을 만든 후에 호출됩니다. BuildBreak 대상이 실행된 후에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다.

GenerateDocumentation

이는 빈 대상입니다. 빌드 프로세스 도중 문서를 생성하려면 이 대상에 작업을 삽입합니다.

사용자 지정 작업을 실행할 수 있도록 대상 재정의

작성하는 작업 코드는 대상과 쌍을 이루어야 합니다. 자세한 내용은 작업 작성을 참조하십시오. 사용자 지정 작업을 작성하려면 다음 단계를 따라야 합니다.

  1. 작업 코드를 작성한 다음 빌드된 이진 파일을 빌드 컴퓨터에서 사용할 수 있도록 해야 합니다. 이렇게 하려면 TfsBuild.proj 파일에 소스 제어 경로를 제공하거나 빌드 컴퓨터 자체에서 이진 파일을 사용할 수 있도록 합니다.

    참고

    작업 코드를 소스 제어에 체크 인하는 것이 좋은 코딩 방법이지만 반드시 필요한 것은 아닙니다.

  2. TfsBuild.proj 파일에서 UsingTask MSBuild 요소로 사용자 지정 작업을 선언하여 해당 작업을 등록합니다.

    자세한 내용은 UsingTask 요소(MSBuild)를 참조하십시오.

    <UsingTask 
        TaskName="MyTasks.SimpleTask" 
        AssemblyName="MyAssembly.Build.Tasks"/>
    
  3. TfsBuild.proj 파일의 원하는 대상에 작업을 삽입하여 작업을 실행합니다.

    <Target Name="BeforeGet">
        <SimpleTask />
    </Target>
    

    참고

    이 태그를 추가하면 XML 스키마 경고가 발생합니다. 이러한 경고는 무시해도 됩니다.

  4. 사용자 지정 작업이 포함된 DLL을 빌드 컴퓨터에 배포합니다.

    중요

    사용자 지정하는 TFSBuild.proj 파일과 연결된 모든 빌드 정의는 변경 내용의 영향을 받습니다.

대상 실행 순서

대상이 실행되는 순서는 CleanCompilationOutputOnly 속성의 값에 따라 결정됩니다. CleanCompilationOutputOnly가 true이면 get 및 label 대상(BeforeGet, CoreGet, AfterGet, BeforeLabel, CoreLabelAfterLabel)이 실행된 후 clean 대상(BeforeClean, CoreCleanAfterClean)이 실행됩니다. CleanCompilationOutputOnly 속성이 false이면 clean 대상이 get 및 label 대상보다 먼저 실행됩니다. CleanCompilationOutputOnly가 true이면 CoreClean 대상이 실행되는 동안 소스 디렉터리에서 중간 어셈블리만 삭제됩니다. 이 속성을 false로 설정하면 CoreClean 대상을 실행하는 동안 전체 소스 디렉터리가 삭제됩니다.

다음 표에서는 CleanCompilationOutputOnly가 true인지 false인지에 따라 실행되는 대상의 순서 목록을 보여 줍니다. 재정의할 수 있는 대상은 굵은 텍스트로 표시됩니다.

CleanCompilationOutputOnly = true

CleanCompilationOutputOnly = false

  1. InitializeBuildProperties

  2. BeforeEndToEndIteration

  3. BuildNumberOverrideTarget

  4. InitializeEndToEndIteration

  5. BeforeInitializeWorkspace

  6. CoreInitializeWorkspace

  7. AfterinitializeWorkspace

  8. InitializeBuild

  9. BeforeGet

  10. CoreGet

  11. AfterGet

  12. BeforeLabel

  13. CoreLabel

  14. AfterLabel

  15. BeforeClean

  16. CoreCleanCompilationOutput

  17. AfterClean

  18. BeforeCompile

  19. 각 플랫폼/구성 조합에 대한 CoreCompile

  20. BeforeCompileConfiguration

  21. 빌드할 각 솔루션에 대한 CoreCompileConfiguration

  22. BeforeCompileSolution

  23. CoreCompileSolution

  24. AfterCompileSolution

  25. AfterCompileConfiguration

  26. AfterCompile

  27. BeforeGetChangesetsAndUpdateWorkItems

  28. CoreGetChangeSetsAndUpdateWorkItems

  29. AfterGetChangesetsAndUpdateWorkItems

  30. BeforeTest

  31. 각 플랫폼/구성 조합에 대한 CoreTest

  32. BeforeTestConfiguration

  33. CoreTestConfiguration

  34. AfterTestConfiguration

  35. AfterTest

  36. GenerateDocumentation

  37. BeforeDropBuild

  38. CoreDropBuild

  39. AfterDropBuild

  40. AfterEndToEndIteration

  1. InitializeBuildProperties

  2. BeforeEndToEndIteration

  3. BuildNumberOverrideTarget

  4. InitializeEndToEndIteration

  5. BeforeInitializeWorkspace

  6. CoreInitializeWorkspace

  7. AfterInitializeWorkspace

  8. BeforeClean

  9. CoreClean

  10. AfterClean

  11. InitializeBuild

  12. BeforeGet

  13. CoreGet

  14. AfterGet

  15. BeforeLabel

  16. CoreLabel

  17. AfterLabel

  18. BeforeCompile

  19. 각 플랫폼/구성 조합에 대한 CoreCompile

  20. BeforeCompileConfiguration

  21. 빌드할 각 솔루션에 대한 CoreCompileConfiguration

  22. BeforeCompileSolution

  23. CoreCompileSolution

  24. AfterCompileSolution

  25. AfterCompileConfiguration

  26. AfterCompile

  27. BeforeGetChangesetsAndUpdateWorkItems

  28. CoreGetChangeSetsAndUpdateWorkItems

  29. AfterGetChangesetsAndUpdateWorkItems

  30. BeforeTest

  31. 각 플랫폼/구성 조합에 대한 CoreTest

  32. BeforeTestConfiguration

  33. CoreTestConfiguration

  34. AfterTestConfiguration

  35. AfterTest

  36. GenerateDocumentation

  37. BeforeDropBuild

  38. CoreDropBuild

  39. AfterDropBuild

  40. AfterEndToEndIteration

다음은 CoreCompile 대상을 실행하는 동안 오류가 발생하는 경우에 실행되는 대상의 목록입니다. 재정의할 수 있는 대상은 굵은 텍스트로 표시됩니다.

  1. SetBuildBreakProperties

  2. BeforeOnBuildBreak

  3. GetChangesetsOnBuildBreak

  4. BeforeDropBuild

  5. CoreDropBuild

  6. AfterDropBuild

  7. BeforeCreateWorkItem

  8. CoreCreateWorkItem

  9. AfterCreateWorkItem

  10. CoreOnBuildBreak

  11. AfterOnBuildBreak

참고 항목

개념

Team Foundation Build 구성 파일 이해

사용자 지정 가능한 Team Foundation Build 속성