사용자 지정 도구 세트 구성 만들기

MSBuild 도구 집합은 애플리케이션 프로젝트를 빌드하는 데 사용할 수 있는 작업, 대상 및 도구에 대한 참조를 포함합니다. MSBuild는 표준 도구 집합을 포함하지만 사용자 지정 도구 집합을 만들 수도 있습니다.

표준 도구 집합 구성

MSBuild에는 Visual Studio 설치 디렉터리 아래의 MSBuild\Current\Bin 폴더에 설치된 현재 버전의 MSBuild를 참조하는 표준 도구 집합 Current가 포함되어 있습니다.

사용자 지정 도구 집합 정의

표준 도구 집합이 빌드 요구 사항을 충족하지 않는 경우 사용자 지정 Toolset을 만들 수 있습니다. 예를 들어 C++ 프로젝트 빌드를 위해 별도 시스템이 있어야 하는 빌드 랩 시나리오가 있을 수 있습니다. /toolsVersion 명령줄 스위치를 사용하여 MSBuild.exe를 실행할 때, 사용자 지정 Toolset을 사용하여 ToolsVersion 특성에 사용자 지정 값을 할당할 수 있습니다. 프로젝트 파일에서 ToolsVersion 특성을 지정하면 무시됩니다.

이 작업을 수행하여 해당 도구 집합을 사용하는 모든 프로젝트에 사용할 수 있는 사용자 고유의 사용자 지정 도구 집합 속성을 정의할 뿐만 아니라 $(MSBuildToolsPath) 속성을 사용하여 해당 디렉터리에서 .targets 파일을 가져올 수도 있습니다.

MSBuild.exe(또는 사용 중인 MSBuild 엔진을 호스트하는 사용자 지정 도구)에 대한 구성 파일에 사용자 지정 도구 집합을 지정합니다. 예를 들어 MyCustomToolset이라는 도구 집합을 정의하려는 경우 MSBuild.exe에 대한 구성 파일은 다음 Toolset 정의를 포함할 수 있습니다.

<msbuildToolsets default="MyCustomToolset">
   <toolset toolsVersion="MyCustomToolset">
      <property name="MSBuildToolsPath"
        value="C:\SpecialPath" />
   </toolset>
</msbuildToolsets>

<msbuildToolsets>는 또한 다음과 같이 구성 파일에서 정의되어야 합니다.

<configSections>
   <section name="msbuildToolsets"
       type="Microsoft.Build.BuildEngine.ToolsetConfigurationSection,
       Microsoft.Build, Version=15.1.0.0, Culture=neutral,
       PublicKeyToken=b03f5f7f11d50a3a">
   </section>
</configSections>

참고

제대로 읽으려면 <configSections><configuration> 섹션에서 첫 번째 하위 섹션이어야 합니다.

ToolsetConfigurationSection은 사용자 지정 구성에 대한 MSBuild 호스트에서 사용할 수 있는 사용자 지정 구성 섹션입니다. 사용자 지정 도구 집합을 사용하는 경우 호스트는 구성 파일 항목을 제공하기만 하면 빌드 엔진을 초기화하기 위해 아무 작업도 수행할 필요가 없습니다.

다음 속성은 프로젝트에 사용되는 ToolsVersion의 값에 관련됩니다.

  • $(MSBuildBinPath) 는 레지스트리 또는 ToolsVersion이 정의된 구성 파일에 지정된 ToolsPath 값으로 설정됩니다. 레지스트리 또는 구성 파일의 $(MSBuildToolsPath) 설정은 핵심 작업 및 대상의 위치를 지정합니다. 프로젝트 파일에서 $(MSBuildBinPath) 속성 및 $(MSBuildToolsPath) 속성에 매핑됩니다.

  • $(MSBuildToolsPath)는 구성 파일에 지정된 MSBuildToolsPath 속성에서 제공되는 예약된 속성입니다. (이 속성은 $(MSBuildBinPath)를 대체합니다. 그러나 호환성을 위해 $(MSBuildBinPath)가 전달됩니다.) 사용자 지정 도구 집합은 $(MSBuildToolsPath)$(MSBuildBinPath)가 동일한 값을 갖지 않는 한 둘 중 하나만 정의해야 합니다.

    또한 MSBuildToolsPath 속성을 추가하는 데 사용하는 동일한 구문을 사용하여 구성 파일에 ToolsVersion 관련 사용자 지정 속성을 추가할 수도 있습니다. 이러한 사용자 지정 속성을 프로젝트 파일에 사용할 수 있도록 하려면 구성 파일에 지정된 값의 이름과 동일한 이름을 사용합니다. 구성 파일에서 하위 도구 집합이 아닌 도구 집합을 정의할 수 있습니다.