빌드 플랫폼에는 빌드 프로세스 중에 여러 작업을 실행할 수 있는 기능이 필요합니다. MSBuild는 작업을 사용하여 이러한 작업을 수행합니다. 작업은 MSBuild에서 원자성 빌드 작업을 수행하는 데 사용하는 실행 코드 단위입니다.
작업 논리
MSBuild XML 프로젝트 파일 형식은 자체적으로 빌드 작업을 완전히 실행할 수 없으므로 프로젝트 파일 외부에서 작업 논리를 구현해야 합니다.
태스크의 실행 논리는 네임스페이스에 정의된 ITask 인터페이스를 Microsoft.Build.Framework 구현하는 .NET 클래스로 구현됩니다.
또한 작업 클래스는 프로젝트 파일의 작업에 사용할 수 있는 입력 및 출력 매개 변수를 정의합니다. 작업 클래스에 의해 노출되는 모든 공용 설정 가능한 비정적 비 추상 속성은 Task 요소에 동일한 이름의 해당 특성을 배치하고 이 문서의 뒷부분에 나와 있는 예제와 같이 해당 값을 설정하여 프로젝트 파일에 값을 부여할 수 있습니다.
인터페이스를 구현하는 관리되는 클래스를 작성하여 고유한 작업을 작성할 ITask 수 있습니다. 자세한 내용은 작업 쓰기를 참조하세요.
프로젝트 파일에서 작업 실행
프로젝트 파일에서 작업을 실행하기 전에 먼저 작업을 구현하는 어셈블리의 형식을 UsingTask 요소를 사용하여 작업 이름에 매핑해야 합니다. 이를 통해 MSBuild는 프로젝트 파일에서 작업의 실행 논리를 찾을 위치를 알 수 있습니다.
MSBuild 프로젝트 파일에서 작업을 실행하려면 작업의 이름을 가진 요소를 요소의 Target 자식으로 만듭니다. 태스크에서 매개 변수를 허용하는 경우 이러한 매개 변수는 요소의 특성으로 전달됩니다.
MSBuild 항목 목록 및 속성을 매개 변수로 사용할 수 있습니다. 예를 들어 다음 코드는 작업을 호출 MakeDir 하고 개체의 Directories 속성 값을 속성 MakeDir 값 BuildDir 과 동일하게 설정합니다.
<Target Name="MakeBuildDirectory">
<MakeDir
Directories="$(BuildDir)" />
</Target>
태스크는 나중에 사용할 수 있도록 항목 또는 속성에 저장할 수 있는 프로젝트 파일에 정보를 반환할 수도 있습니다. 예를 들어 다음 코드는 작업을 호출 Copy 하고 출력 속성 CopiedFiles 의 SuccessfullyCopiedFiles 정보를 항목 목록에 저장합니다.
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="@(MyDestFolder)">
<Output
TaskParameter="CopiedFiles"
ItemName="SuccessfullyCopiedFiles"/>
</Copy>
</Target>
포함된 작업
MSBuild는 파일을 복사하는 Copy, 디렉터리를 만드는 MakeDir, C# 소스 코드 파일을 컴파일하는 Csc와 같은 많은 작업을 제공합니다. 사용 가능한 작업 및 사용량 정보의 전체 목록은 작업 참조참조하세요.
재정의된 작업
MSBuild는 여러 위치에서 작업을 찾습니다. 첫 번째 위치는 확장 .OverrideTasks 이 MSBuild 디렉터리에 저장된 파일에 있습니다. 이러한 파일의 태스크는 프로젝트 파일의 작업을 포함하여 이름이 같은 다른 작업을 재정의합니다. 두 번째 위치는 프로젝트 파일 및 해당 가져오기에 있습니다. 프로젝트에 정의되지 않은 작업은 MSBuild 디렉터리의 파일에 정의된 MSBuild의 기본 작업에서 .tasks 검색됩니다.