MSBuild
1. 개요
MSBuild는 마이크로소프트에서 개발한 빌드 플랫폼으로, 주로 .NET 프로젝트를 빌드하는 데 사용된다. 2003년 비주얼 스튜디오 2005와 닷넷 프레임워크 2.0을 위해 처음 개발되었으며, 이후 비주얼 스튜디오 및 닷넷 프레임워크의 발전에 따라 지속적으로 업데이트되었다. MSBuild는 대상, 작업, 속성 및 항목으로 구성되며, NMAKE의 기능을 계승하여 Visual Studio의 팀 빌드 기능과 통합되어 사용된다.
| 유형 | 빌드 자동화 소프트웨어 |
|---|---|
| 개발자 | 마이크로소프트 .NET 재단 |
| 최초 출시일 | 2003년 |
| 최신 버전 | v17.8.3 |
| 최신 릴리스 날짜 | 2023년 11월 15일 |
| 프로그래밍 언어 | C 샤프 |
| 운영체제 | 크로스 플랫폼 |
| 플랫폼 | .NET Framework .NET |
| 라이선스 | MIT 허가서 |
-
마이크로소프트 비주얼 스튜디오 -
비주얼 베이직
비주얼 베이직은 1991년 마이크로소프트에서 출시된 GUI 기반 응용 프로그램 개발에 강점을 가진 프로그래밍 언어이며, 윈도우용 응용 프로그램 및 데이터베이스 조작 프로그램 개발에 주로 사용되었고, 2005년 표준 지원이 중단되었다. -
마이크로소프트 비주얼 스튜디오 -
J 샤프
J#은 마이크로소프트에서 개발한 .NET Framework 기반의 프로그래밍 언어로, 자바와 유사한 문법을 가지며 기존 자바 코드의 .NET 플랫폼 이전 및 .NET 언어와의 상호 운용성을 지원했으나 현재는 개발이 중단되었다. -
컴파일 도구 -
Libtool
Libtool은 다양한 유닉스 계열 운영 체제에서 정적 및 동적 라이브러리 생성을 관리하고, 운영 체제별 차이로 인한 소프트웨어 이식 문제를 해결하기 위해 GNU 빌드 시스템에서 사용되는 도구이다. -
컴파일 도구 -
GNU 빌드 시스템
GNU 빌드 시스템은 Autoconf, Automake, Libtool 등의 오토툴과 GNU make 등으로 구성되어 다양한 UNIX 시스템에서 소프트웨어 빌드 및 설치를 지원하지만, 복잡성과 이식성에 대한 비판도 존재한다. -
빌드 자동화 -
GNU 빌드 시스템
GNU 빌드 시스템은 Autoconf, Automake, Libtool 등의 오토툴과 GNU make 등으로 구성되어 다양한 UNIX 시스템에서 소프트웨어 빌드 및 설치를 지원하지만, 복잡성과 이식성에 대한 비판도 존재한다. -
빌드 자동화 -
Gradle
Gradle은 빌드 프로세스를 자동화하는 오픈 소스 시스템으로, Groovy를 기반으로 하며 짧은 설정 파일로 빌드 단계를 설명하고 플러그인을 통해 기능을 확장하며 Ant와 통합된다.
2. 역사
MSBuild는 2003년 비주얼 스튜디오 2005(코드명 Whidbey) 및 윈도우 비스타(코드명 롱혼/Longhorn)에 사용하기 위해 닷넷 프레임워크 2.0을 대상으로 처음 만들어졌다. 초기에는 닷넷 프레임워크와 함께 번들로 제공되었으나, 비주얼 스튜디오 2013부터는 비주얼 스튜디오와 함께 번들로 제공된다.
3. 버전
MSBuild는 닷넷 프레임워크 및 비주얼 스튜디오의 발전에 따라 꾸준히 업데이트되어 왔다. 다음은 주요 버전 정보이다.
4. 구성 요소
MSBuild는 Makefile의 매크로와 비슷한 '속성' 및 '항목'을 제공한다. 속성은 정적인 값을 지정하는 데 사용되고, 항목은 일반적으로 작업 실행 대상이 되는 파일이나 폴더 세트를 정의하는 데 사용된다. 와일드카드를 지원하여 항목에 파일을 쉽게 지정할 수 있다.
4.1. 대상 (Target)
대상(Target)은 MSBuild가 실행할 작업 집합을 포함한다. MSBuild의 초점은 프로젝트 파일로 MSBuild를 호출할 때 지정된 결과 대상이다. 프로젝트는 여러 개의 대상 항목을 포함할 수 있으며, 각 항목은 순차적으로(그리고 조건부로) 실행된다. 종속 대상은 요청된 대상보다 먼저 실행된다. 현재 대상의 실행 흐름은 Condition, BeforeTargets, AfterTargets, DependsOnTargets 특성을 사용하여 지정할 수 있다. 각 대상은 자체 완료에 필요한 작업을 포함할 수 있다. 대상은 일반적으로 파일, 파일 집합 또는 디렉토리에 대해 실행되는 작업이다.
4.2. 작업 (Task)
작업(Task)은 대상을 완료하기 위해 실행되는 명령이다. 빌드 프로세스 중에 임의의 수의 작업을 그룹화하고 실행하는 데 사용된다. 작업은 일반적으로 `Task` 클래스를 상속하거나 `ITask` 인터페이스를 구현하는 클래스로 .NET 어셈블리에 구현된다. 다수의 기본적인 작업이 .NET Framework의 일부로 제공되며, 커뮤니티에서 개발한 많은 작업도 자유롭게 이용 가능하다. 작업의 예로는 파일 복사, 디렉토리 생성, XML 구문 분석 등이 있다.
4.3. 속성 (Property) 및 항목 (Item)
MSBuild는 Makefile의 매크로와 개념적으로 유사한 속성 및 항목을 제공한다. 속성은 정적인 값을 지정하는 데 사용되는 반면, 항목은 일반적으로 작업 실행 대상이 되는 파일 또는 폴더 세트를 정의하는 데 사용된다. 와일드카드 지원을 통해 항목에 파일을 쉽게 지정할 수 있다.
5. 다중 타겟팅
MSBuild는 지원되는 원하는 .NET Framework 버전에 대해 프로젝트를 빌드할 수 있는 "다중 타겟팅" 기능을 제공한다. 그러나 프로젝트의 주어진 빌드는 한 번에 하나의 프레임워크 버전만을 대상으로 할 수 있다.
6. NMAKE와의 관계
MSBuild는 NMAKE 도구의 기능적인 후계자이다. Visual Studio는 이전 버전의 Visual Studio에서 생성된 프로젝트나 워크스페이스를 VCBuild 또는 MSBuild의 프로젝트나 솔루션으로 변환하는 기능을 제공한다. 예를 들어, Visual Studio 6에서 생성된 dsp/dsw 파일을 Visual Studio .NET 2002/.NET 2003/2005/2008에서 열면 각각 vcproj/sln 파일로 변환된다. Visual Studio 2010 이후 버전에서는 vcxproj/sln 파일로 변환된다.