Share via


MSBuild 작업

빌드 플랫폼에는 빌드 프로세스 동안 개수에 제한 없이 작업을 실행할 수 있는 기능이 있어야 합니다. MSBuild에서는 작업을 사용하여 이러한 작업을 수행합니다. 작업이란 MSBuild에서 원자 빌드 작업을 수행하는 데 사용하는 실행 코드 단위입니다.

작업 논리

MSBuild XML 프로젝트 파일 형식은 자체에서 빌드 작업을 완전히 실행할 수 없으므로 작업 논리가 프로젝트 파일 외부에서 구현되어야 합니다.

작업의 실행 논리는 Microsoft.Build.Framework 네임스페이스에 정의되어 있는 ITask 인터페이스를 구현하는 .NET 클래스로 구현됩니다.

작업 클래스는 또한 프로젝트 파일의 작업에 사용할 수 있는 입력 및 출력 매개 변수를 정의합니다. 작업 클래스에 의해 노출되는, 공용으로 설정 가능한 모든 비정적 비추상 속성은 같은 이름의 해당 특성을 Task 요소에 설정하면 프로젝트 파일에서 액세스할 수 있습니다.

ITask 인터페이스를 구현하는 관리되는 클래스를 작성하여 자신만의 작업을 작성할 수 있습니다. 자세한 내용은 작업 작성을 참조하십시오.

프로젝트 파일의 작업 실행

프로젝트 파일의 작업을 실행하기 전에 먼저 작업을 구현하는 어셈블리의 형식을 UsingTask 요소를 사용하여 작업 이름에 매핑해야 합니다. 그러면 MSBuild에서 프로젝트 파일에 작업이 있을 때 해당 작업의 실행 논리를 찾을 위치를 알 수 있습니다.

MSBuild 프로젝트 파일의 작업을 실행하려면 작업 이름이 포함된 요소를 Target 요소의 자식으로 만듭니다. 작업에서 매개 변수를 허용하면 이러한 매개 변수는 요소의 특성으로 전달됩니다.

MSBuild 항목 목록과 속성을 매개 변수로 사용할 수 있습니다. 예를 들어, 다음 코드에서는 MakeDir 작업을 호출하고 MakeDir 개체의 Directories 속성 값을 앞의 예제에서 선언한 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, Visual C# 소스 코드 파일을 컴파일하는 Csc 등 많은 작업이 제공됩니다. 사용할 수 있는 작업 및 사용법 정보에 대한 전체 목록은 MSBuild 작업 참조를 참조하십시오.

재정의된 작업

MSBuild는 여러 위치에서 작업을 찾습니다. 첫 번째 위치는 .NET Framework 디렉터리에 저장된 확장명이 .OverrideTasks인 파일입니다. 이러한 파일의 작업은 프로젝트 파일에 있는 작업을 포함하여 이름이 같은 다른 작업을 모두 재정의합니다. 두 번째 위치는 .NET Framework 디렉터리에 있는 확장명이 .Tasks인 파일입니다. 작업을 이러한 위치에서 찾을 수 없으면 프로젝트에 있는 작업이 사용됩니다.

참고 항목

개념

작업 작성

MSBuild 인라인 작업

기타 리소스

MSBuild 개념

MSBuild