사용자 지정 가능한 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 |
이는 빈 대상입니다. 빌드 프로세스 도중 문서를 생성하려면 이 대상에 작업을 삽입합니다. |
사용자 지정 작업을 실행할 수 있도록 대상 재정의
작성하는 작업 코드는 대상과 쌍을 이루어야 합니다. 자세한 내용은 작업 작성을 참조하십시오. 사용자 지정 작업을 작성하려면 다음 단계를 따라야 합니다.
작업 코드를 작성한 다음 빌드된 이진 파일을 빌드 컴퓨터에서 사용할 수 있도록 해야 합니다. 이렇게 하려면 TfsBuild.proj 파일에 소스 제어 경로를 제공하거나 빌드 컴퓨터 자체에서 이진 파일을 사용할 수 있도록 합니다.
참고
작업 코드를 소스 제어에 체크 인하는 것이 좋은 코딩 방법이지만 반드시 필요한 것은 아닙니다.
TfsBuild.proj 파일에서 UsingTask MSBuild 요소로 사용자 지정 작업을 선언하여 해당 작업을 등록합니다.
자세한 내용은 UsingTask 요소(MSBuild)를 참조하십시오.
<UsingTask TaskName="MyTasks.SimpleTask" AssemblyName="MyAssembly.Build.Tasks"/>
TfsBuild.proj 파일의 원하는 대상에 작업을 삽입하여 작업을 실행합니다.
<Target Name="BeforeGet"> <SimpleTask /> </Target>
참고
이 태그를 추가하면 XML 스키마 경고가 발생합니다. 이러한 경고는 무시해도 됩니다.
사용자 지정 작업이 포함된 DLL을 빌드 컴퓨터에 배포합니다.
중요
사용자 지정하는 TFSBuild.proj 파일과 연결된 모든 빌드 정의는 변경 내용의 영향을 받습니다.
대상 실행 순서
대상이 실행되는 순서는 CleanCompilationOutputOnly 속성의 값에 따라 결정됩니다. CleanCompilationOutputOnly가 true이면 get 및 label 대상(BeforeGet, CoreGet, AfterGet, BeforeLabel, CoreLabel 및 AfterLabel)이 실행된 후 clean 대상(BeforeClean, CoreClean 및 AfterClean)이 실행됩니다. CleanCompilationOutputOnly 속성이 false이면 clean 대상이 get 및 label 대상보다 먼저 실행됩니다. CleanCompilationOutputOnly가 true이면 CoreClean 대상이 실행되는 동안 소스 디렉터리에서 중간 어셈블리만 삭제됩니다. 이 속성을 false로 설정하면 CoreClean 대상을 실행하는 동안 전체 소스 디렉터리가 삭제됩니다.
다음 표에서는 CleanCompilationOutputOnly가 true인지 false인지에 따라 실행되는 대상의 순서 목록을 보여 줍니다. 재정의할 수 있는 대상은 굵은 텍스트로 표시됩니다.
CleanCompilationOutputOnly = true |
CleanCompilationOutputOnly = false |
---|---|
|
|
다음은 CoreCompile 대상을 실행하는 동안 오류가 발생하는 경우에 실행되는 대상의 목록입니다. 재정의할 수 있는 대상은 굵은 텍스트로 표시됩니다.
SetBuildBreakProperties
BeforeOnBuildBreak
GetChangesetsOnBuildBreak
BeforeDropBuild
CoreDropBuild
AfterDropBuild
BeforeCreateWorkItem
CoreCreateWorkItem
AfterCreateWorkItem
CoreOnBuildBreak
AfterOnBuildBreak