다음을 통해 공유


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

업데이트: 2007년 11월

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

컴파일이 완료된 후에 호출됩니다. 코드 파일이 컴파일된 후에 사용자 지정 작업을 실행하려면 이 대상에 작업을 삽입합니다. 예제를 보려면 연습: Visual Studio 설치 프로젝트를 빌드하도록 팀 빌드 구성을 참조하십시오.

BeforeGetChangesetsAndUpdateWorkItems

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

AfterGetChangesetsAndUpdateWorkItems

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

BeforeTest

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

BeforeTestConfiguration

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

AfterTestConfiguration

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

AfterTest

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

BeforeDropBuild

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

AfterDropBuild

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

BeforeCreateWorkItem

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

AfterCreateWorkItem

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

BeforeOnBuildBreak

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

AfterOnBuildBreak

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

GenerateDocumentation

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

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

TfsBuild.proj 파일에 소스 제어 경로를 제공하거나 빌드 컴퓨터 자체에서 이진 파일을 사용할 수 있도록 하여 작성하는 작업 코드가 대상과 쌍을 이루고 빌드된 이진 파일을 빌드 컴퓨터에서 사용할 수 있어야 합니다. 또한 TfsBuild.proj 파일에서 UsingTaskMSBuild 요소로 사용자 지정 작업을 선언하여 작업을 등록해야 합니다. 자세한 내용은 UsingTask 요소(MSBuild)를 참조하십시오. 마지막으로 사용자 지정 작업이 포함된 DLL을 빌드 컴퓨터에 배포합니다.

중요:

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

사용자 지정 작업의 자세한 구현 방법이 나와 있는 예제를 보려면 연습: 사용자 지정 작업을 통해 Team Foundation Build 사용자 지정을 참조하십시오.

대상 실행 순서

대상이 실행되는 순서는 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. PackageBinaries(재정의 가능)

  38. BeforeDropBuild(재정의 가능)

  39. CoreDropBuild

  40. AfterDropBuild(재정의 가능)

  41. 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. PackageBinaries(재정의 가능)

  38. BeforeDropBuild(재정의 가능)

  39. CoreDropBuild

  40. AfterDropBuild(재정의 가능)

  41. 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 속성

Team Foundation Build 작업