빌드 사용자 지정
표준 빌드 프로세스(Microsoft.Common.props 및 Microsoft.Common.targets 가져오기)를 사용하는 MSBuild 프로젝트에는 빌드 프로세스를 사용자 지정하는 데 사용할 수 있는 몇 가지 확장성 후크가 있습니다.
많은 사용자 지정 가능한 빌드 작업은 속성에 의해 제어됩니다. 원하는 효과를 얻으려면 속성 값을 설정하는 방법과 위치를 아는 것이 중요합니다. 명령줄(및 응답 파일), Directory.Build.props와 같은 특수 파일, 가져온 파일 또는 프로젝트 파일에서 속성을 설정할 수 있습니다. .NET SDK와 같은 SDK에서 암시적 가져오기를 포함하여 속성이 사용되는 위치, 설정 또는 변경된 위치 및 가져온 파일의 순서를 알아야 합니다.
속성의 목록을 보려면 MSBuild 공통 속성을 참조하세요.
사용자 지정 옵션 살펴보기
복잡성 및 영향 범위가 증가하는 순서대로 다음과 같은 사용자 지정 옵션이 나열됩니다. 이 목록의 맨 위에서 시작하여 용도에 맞는 가장 복잡한 사용자 지정 옵션을 사용하는 것이 좋습니다.
사용자 지정 옵션 | 설명 |
---|---|
MSBuild 명령줄에 인수 추가 | 모든 종속 프로젝트의 기본 프로젝트 빌드 및 빌드에 영향을 주는 전역 속성을 설정합니다. |
단일 프로젝트에 대한 빌드 사용자 지정 | .props 또는 .targets 파일에 속성을 추가하여 빌드 설정을 사용자 지정합니다. |
빌드 프로세스에서 생성된 파일 처리 | 생성된 파일이 빌드 출력에 제대로 포함되도록 확인하는 방법입니다. |
하나 이상의 프로젝트에 대한 빌드 사용자 지정 | Directory.Build.props에 속성을 추가하거나 Directory.Build.targets에 속성과 대상을 추가하여 폴더 아래의 모든 프로젝트에 대한 빌드를 사용자 지정합니다. 이 기술은 SDK에서 설정하거나 사용하는 속성을 설정하고 폴더 또는 하위 폴더의 모든 프로젝트에 영향을 주도록 사용자 지정 범위를 지정하는 데 유용합니다. |
로컬 빌드 사용자 지정 | 공유 소스 파일에 영향을 주지 않고 로컬 컴퓨터에서만 빌드를 변경합니다. |
모든 .NET 빌드 사용자 지정 | .NET 빌드의 경우 시스템 전체 범위를 사용하여 빌드를 사용자 지정합니다. |
C++ 빌드 사용자 지정 | 시스템에 MSBuild를 설치하여 관리하는 프로젝트, 솔루션, 폴더 또는 모든 빌드로 범위가 지정된 C++ 빌드를 사용자 지정합니다. |
프로젝트에 대한 명령줄 MSBuild 호출에 인수 추가
명령줄에서 전역 속성을 설정할 수 있습니다. 전역 속성은 종속성을 포함하여 모든 프로젝트 빌드에 영향을 줍니다. 프로젝트를 빌드하면 모든 프로젝트 종속성에 대해 가능한 빌드가 자동으로 트리거됩니다. MSBuild의 일반적인 동작은 오래된 종속 프로젝트를 빌드하는 것입니다. 이러한 종속 프로젝트 빌드는 명령줄에서 원래 프로젝트와 동일한 전역 속성 설정으로 시작됩니다.
원본 디렉터리 이상에 있는 Directory.Build.rsp 파일이 프로젝트의 명령줄 빌드에 적용됩니다. 자세한 내용은 MSBuild 지시 파일을 참조하세요.
속성 또는 .targets
파일에 속성 추가 중에서 .props
선택
MSBuild는 가져오기 순서에 종속되며, 속성(UsingTask
또는 대상)의 마지막 정의가 사용됩니다.
명시적 가져오기를 사용하는 경우, 언제든지 .props
또는 .targets
파일에서 가져올 수 있습니다. 널리 사용되는 규칙은 다음과 같습니다.
.props
파일은 가져오기 순서의 초기에 가져옵니다..targets
파일은 빌드 순서의 뒷부분에서 가져옵니다.
이 규칙은 <Project Sdk="SdkName">
가져오기에 의해 적용됩니다. 즉, Sdk.props 가져오기가 파일의 모든 내용 앞에 오고, Sdk.targets가 파일의 모든 내용 뒤에 마지막으로 옵니다.
속성을 배치할 위치를 결정하는 경우 다음 일반 지침을 따르세요.
많은 속성의 경우 덮어쓰여지지 않고 실행 시에만 읽기 때문에 정의되는 위치는 중요하지 않습니다.
개별 프로젝트에서 사용자 지정할 수 있는 동작의 경우
.props
파일에서 기본값을 설정합니다.MSBuild가
.props
사용자의 프로젝트를 읽을 때까지 사용자 지정이 수행되지 않으므로 사용자 지정 속성의 값을 읽어 파일에서 종속 속성을 설정하지 마세요.개별 프로젝트에서 사용자 지정을
.targets
선택하므로 파일에서 종속 속성을 설정합니다.속성을 재정의해야 하는 경우 모든 사용자 프로젝트 사용자 지정이 적용된 후에
.targets
파일에 재정의합니다. 파생 속성을 사용할 때는 주의합니다. 파생 속성도 재정의해야 할 수 있습니다..props
파일에 항목을 포함합니다(속성에 따라 조건부). 모든 속성은 항목 전에 고려되므로 사용자 프로젝트 속성 사용자 지정이 선택되고 파일에서.props
가져온 항목이 있으면 사용자의 프로젝트에 가져오기에서 가져온 항목이Update
제공될 수Remove
있습니다..targets
파일에서 대상을 정의합니다. 그러나 SDK를 통해.targets
파일을 가져오는 경우, 이 시나리오를 사용하면 대상 재정의가 더 어려워집니다. 사용자 프로젝트에서는 기본적으로 대상을 재정의할 수 없기 때문입니다.가능한 경우, 대상 내의 속성을 변경하는 대신 평가 시간에 속성을 사용자 지정하는 것이 좋습니다. 이 지침을 따르면 보다 간편하게 프로젝트를 로드하고 프로젝트에서 수행하는 작업을 파악할 수 있습니다.