Share via


MSBuild 개요

업데이트: 2007년 11월

Microsoft Build Engine(MSBuild)은 Microsoft와 Visual Studio의 새로운 빌드 플랫폼입니다. MSBuild는 소프트웨어를 처리하고 빌드하는 방법에 대해 완전히 투명하므로 개발자는 Visual Studio가 설치되지 않은 빌드 랩 환경에서 제품을 조정하고 빌드할 수 있습니다. 이 항목은 다음의 간단한 개요를 제공합니다.

  • MSBuild 프로젝트 파일의 기본 요소

  • MSBuild를 사용하여 프로젝트를 빌드하는 방법

  • MSBuild의 고급 기능

  • Visual Studio에서 MSBuild를 사용하여 프로젝트를 빌드하는 방법

프로젝트 파일

MSBuild에는 이해하기 쉽고 확장이 용이하며 Microsoft에서 완전히 지원하는 XML 기반 프로젝트 파일 형식이 새로 도입되었습니다. 개발자는 MSBuild 프로젝트 파일 형식을 사용하여 빌드할 항목과 해당 항목이 여러 플랫폼과 구성에서 빌드되는 방법을 완벽하게 기술할 수 있습니다. 또한 프로젝트 파일 형식을 사용하여 개별 파일로 분해될 수 있는 재사용 가능한 빌드 규칙을 작성함으로써 해당 제품 내의 여러 프로젝트에서 빌드가 일관성 있게 수행되도록 할 수 있습니다. 다음 단원에서는 MSBuild 프로젝트 파일 형식의 몇 가지 기본 요소를 설명합니다.

항목

항목은 빌드 시스템에 대한 입력을 나타내며 사용자가 정의한 컬렉션 이름에 따라 항목 컬렉션으로 그룹화됩니다. 이러한 항목 컬렉션은 컬렉션에 포함된 개별 항목을 사용하여 빌드 프로세스의 단계를 수행하는 작업의 매개 변수로 사용될 수 있습니다.

항목은 항목 컬렉션의 이름을 갖는 요소를 ItemGroup 요소의 자식으로 만들어 프로젝트 파일에 선언됩니다. 예를 들어, 다음 코드에서는 두 개의 파일을 포함하는 Compile이라는 항목 컬렉션을 만듭니다.

<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

프로젝트 파일 전체에서 항목 컬렉션을 참조할 때는 @(ItemCollectionName) 구문을 사용합니다. 예를 들어, 앞의 예제에서는 @(Compile)을 사용하여 항목 컬렉션을 참조합니다.

항목은 와일드카드를 사용하여 선언될 수 있으며 고급 빌드 시나리오에 대한 추가 메타데이터를 포함할 수 있습니다. 항목에 대한 자세한 내용은 MSBuild 항목을 참조하십시오.

속성

속성은 빌드를 구성하는 데 사용될 수 있는 키/값 쌍을 나타냅니다. 항목과 속성은 다음과 같은 점에서 다릅니다.

  • 항목은 컬렉션에 저장되지만, 속성은 단일 스칼라 값을 포함합니다.

  • 항목은 항목 컬렉션에서 제거될 수 없지만, 속성은 정의된 후 변경되는 값을 가질 수 있습니다.

  • 항목은 메타데이터를 포함할 수 있고 %(ItemMetadata) 표기법을 사용할 수 있으나, 속성은 그렇지 않습니다.

속성 이름을 갖는 요소를 PropertyGroup 요소의 자식으로 만들어 속성을 선언합니다. 예를 들어, 다음 코드에서는 값이 Build인 BuildDir라는 속성을 만듭니다.

<PropertyGroup>
    <BuildDir>Build</BuildDir>
</PropertyGroup>

프로젝트 파일 전체에서 속성을 참조할 때는 $(PropertyName) 구문을 사용합니다. 예를 들어, 앞의 예제에서는 $(BuildDir)를 사용하여 속성을 참조합니다. 속성에 대한 자세한 내용은 MSBuild 속성을 참조하십시오.

작업

작업은 MSBuild 프로젝트에서 빌드 작업을 수행하는 데 사용하는 재사용 가능한 실행 코드 단위입니다. 예를 들어, 작업은 입력 파일을 컴파일하거나 외부 도구를 실행할 수 있습니다. 작업이 만들어지면 다른 개발자가 다른 프로젝트에서 작업을 공유하고 다시 사용할 수 있습니다.

작업의 실행 논리는 관리 코드로 작성되며 UsingTask 요소를 사용하여 MSBuild에 매핑됩니다. ITask 인터페이스를 구현하는 관리되는 형식을 만들어 자체의 작업을 작성할 수 있습니다. 작업 작성에 대한 자세한 내용은 방법: 작업 작성을 참조하십시오.

MSBuild에는 파일을 복사하는 Copy, 디렉터리를 만드는 MakeDir, Visual C# 소스 코드 파일을 컴파일하는 Csc 등의 다양한 일반적인 작업이 포함되어 있습니다. 사용 가능한 작업과 사용법 정보의 전체 목록은 MSBuild 작업 참조를 참조하십시오.

작업 이름을 갖는 요소를 Target 요소의 자식으로 만들어 MSBuild 프로젝트 파일의 작업을 실행합니다. 작업에서는 일반적으로 요소의 특성으로 전달되는 매개 변수를 받아들이며, 매개 변수로는 MSBuild 항목 컬렉션과 속성이 사용될 수 있습니다. 예를 들어, 다음 코드에서는 MakeDir 작업을 호출하고 앞의 예제에서 선언한 BuildDir 속성의 값을 해당 작업으로 전달합니다.

<Target Name="MakeBuildDirectory">
    <MakeDir
        Directories="$(BuildDir)" />
</Target>

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

대상

대상은 작업을 특정 순서로 그룹화하고 프로젝트 파일의 섹션을 빌드 프로세스에 대한 진입점으로 노출합니다. 대상은 확장할 수 있고 좀더 쉽게 이해할 수 있도록 종종 논리적 섹션으로 그룹화됩니다. 빌드 단계를 많은 대상으로 나누면 해당 코드 섹션을 각 대상으로 복사하지 않아도, 다른 대상에서 빌드 프로세스의 한 부분을 호출할 수 있습니다. 예를 들어, 빌드 프로세스에 대한 몇 개의 진입점에 빌드된 참조가 필요한 경우, 참조를 빌드하는 대상을 만든 다음 필요한 모든 진입점에서 이 대상을 실행할 수 있습니다.

Target 요소를 사용하여 프로젝트 파일에 대상을 선언합니다. 예를 들어, 다음 코드에서는 Compile이라는 대상을 만듭니다. 이 대상은 앞의 예제에서 선언한 항목 컬렉션을 사용하여 Csc 작업을 호출합니다.

<Target Name="Compile">
    <Csc Sources="@(Compile)" />
</Target>

보다 발전된 시나리오에서 대상은 서로의 관계를 설명할 수 있으며 종속성 분석을 수행하여 해당 대상이 최신 상태인 경우 빌드 프로세스의 전체 섹션을 건너뛸 수 있도록 합니다. 대상에 대한 자세한 내용은 MSBuild 대상을 참조하십시오.

MSBuild를 사용하여 빌드

명령줄에서 MSBuild를 실행하려면 적절한 명령줄 옵션을 사용하여 프로젝트 파일을 MSBuild.exe에 전달합니다. 명령줄 옵션을 사용하여 속성을 설정하고 특정 대상을 실행하며 로거를 지정할 수 있습니다. 예를 들어, 다음 명령줄 구문을 사용하여 Configuration 속성을 Debug로 설정하여 MyProj.proj 파일을 빌드합니다.

MSBuild.exe MyProj.proj /property:Configuration=Debug

MSBuild 명령줄 옵션에 대한 자세한 내용은 MSBuild 명령줄 참조를 참조하십시오.

보안 정보:

다운로드된 프로젝트를 빌드하기 전에 코드를 신뢰할 수 있는지 확인하십시오. MSBuild 프로젝트 파일은 시스템에 손상을 주는 작업을 실행할 수도 있습니다.

고급 개념

MSBuild는 빌드하는 동안 오류, 경고 및 메시지를 콘솔이나 기타 로거에 기록하고, 대상에 대한 종속성을 분석하며, 항목 메타데이터에 대해 작업과 대상을 일괄 처리하는 등 고급 작업에 사용될 수 있습니다. 이러한 고급 옵션에 대한 자세한 내용은 MSBuild 고급 개념을 참조하십시오.

Visual Studio 통합

Visual Studio에서는 MSBuild 프로젝트 파일 형식을 사용하여 관리되는 프로젝트에 대한 빌드 정보를 저장합니다. Visual Studio를 통해 추가 및 변경된 프로젝트 설정은 각 프로젝트에 대해 생성되는 .*proj 파일에 반영됩니다. Visual Studio에서는 MSBuild의 호스팅된 인스턴스를 사용하여 관리되는 프로젝트를 빌드합니다. 즉, 관리되는 프로젝트는 Visual Studio에서 빌드할 수 있고 Visual Studio가 설치되지 않았더라도 명령줄에서 빌드할 수 있으며 그 결과는 동일합니다. Visual Studio에서 MSBuild를 사용하는 방법에 대한 자세한 내용은 MSBuild 고급 개념을 참조하십시오.

참고 항목

개념

MSBuild

MSBuild 대상

MSBuild 작업

MSBuild 항목

MSBuild 속성

MSBuild 일괄 처리

MSBuild의 로깅 개요

MSBuild 변환

Visual Studio 통합(MSBuild)

MSBuild 프로젝트 파일 스키마 참조

기타 리소스

MSBuild 참조

MSBuild 작업 참조