표준 및 사용자 지정 도구 집합 구성Standard and Custom Toolset Configurations

MSBuild 도구 집합은 응용 프로그램 프로젝트를 빌드하는 데 사용할 수 있는 작업, 대상 및 도구에 대한 참조를 포함합니다.An MSBuild Toolset contains references to tasks, targets, and tools that you can use to build an application project. MSBuild는 표준 도구 집합을 포함하지만 사용자 지정 도구 집합을 만들 수도 있습니다.MSBuild includes a standard Toolset, but you can also create custom Toolsets. 도구 집합을 지정하는 방법에 대한 내용은 도구 집합(ToolsVersion)을 참조하세요.For information about how to specify a Toolset, see Toolset (ToolsVersion)

표준 도구 집합 구성Standard Toolset Configurations

MSBuild 12.0은 다음 표준 도구 집합을 포함합니다.MSBuild 12.0 includes the following standard Toolsets:

ToolsVersionToolsVersion 도구 집합 경로(MSBuildBinPath 또는 MSBuildToolsPath 빌드 속성에 지정된 대로)Toolset Path (as specified in the MSBuildToolsPath or MSBuildBinPath build property)
2.02.0 Windows 설치 경로\Microsoft.Net\Framework\v2.0.50727\Windows installation path\Microsoft.Net\Framework\v2.0.50727\
3.53.5 Windows 설치 경로\Microsoft.NET\Framework\v3.5\Windows installation path\Microsoft.NET\Framework\v3.5\
4.04.0 Windows 설치 경로\Microsoft.NET\Framework\v4.0.30319\Windows installation path\Microsoft.NET\Framework\v4.0.30319\
12.012.0 %ProgramFiles%\MSBuild\12.0\bin%ProgramFiles%\MSBuild\12.0\bin

ToolsVersion 값은 Visual Studio에서 생성하는 프로젝트에서 사용되는 도구 집합을 결정합니다.The ToolsVersion value determines which Toolset is used by a project that Visual Studio generates. Visual Studio 2013Visual Studio 2013에서 기본값은 "12.0"(프로젝트 파일에 지정된 버전과 관계 없이)이지만 명령 프롬프트에서 /toolsversion 스위치를 사용하여 해당 특성을 재정의할 수 있습니다.In Visual Studio 2013Visual Studio 2013 the default value is "12.0" (no matter what the version specified in the project file), but you can override that attribute by using the /toolsversion switch at a command prompt. 이 특성 및 ToolsVersion을 지정하는 다른 방법에 대한 내용은 ToolsVersion 설정 재정의를 참조하세요.For information about this attribute and other ways to specify the ToolsVersion, see Overriding ToolsVersion Settings.

ToolsVersion이 지정되지 않은 경우 레지스트리 키 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\<Version Number>\DefaultToolsVersionToolsVersion을 정의합니다. 이는 항상 2.0입니다.If the ToolsVersion isn't specified, the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\<Version Number>\DefaultToolsVersion defines the ToolsVersion, which is always 2.0.

다음 레지스트리 키는 MSBuild.exe의 설치 경로를 지정합니다.The following registry keys specify the installation path of MSBuild.exe.

레지스트리 키Registry Key 키 이름Key Name 문자열 키 값String Key Value
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0\ MSBuildToolsPathMSBuildToolsPath .NET Framework 2.0 설치 경로.NET Framework 2.0 Install Path
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\3.5\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\3.5\ MSBuildToolsPathMSBuildToolsPath .NET Framework 3.5 설치 경로.NET Framework 3.5 Install Path
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\4.0\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\4.0\ MSBuildToolsPathMSBuildToolsPath .NET Framework 4 설치 경로.NET Framework 4 Install Path
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\12.0\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\12.0\ MSBuildToolsPathMSBuildToolsPath MSBuild 설치 경로MSBuild Install Path

하위 도구 집합Sub-toolsets

이전 테이블의 레지스트리 키에 하위 키가 있는 경우 MSBuild는 이를 사용하여 하위 도구 집합의 경로가 부모 도구 집합의 경로를 재정의할 수 있는지를 결정합니다.If the registry key in the previous table has a subkey, MSBuild uses it to determine the path of a sub-toolset may override the path in the parent toolset. 다음 하위 키는 예제입니다.The following subkey is an example:

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0\12.0\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0\12.0

속성이 기본 도구 집합 및 선택한 하위 도구 집합에 모두 정의된 경우 하위 도구 집합의 속성 정의가 사용됩니다.If any properties are defined in both the base toolset and the selected sub-toolset, the property definitions in the sub-toolset are used. 예를 들어 MSBuild 4.0 도구 집합은 7.0A SDK를 가리키도록 SDK40ToolsPath를 정의하지만 MSBuild 4.0\11.0 도구 집합은 8.0A SDK를 가리키도록 동일한 속성을 정의합니다.For example, the MSBuild 4.0 toolset defines SDK40ToolsPath to point to the 7.0A SDK, but the MSBuild 4.0\11.0 toolset defines the same property to point to the 8.0A SDK. VisualStudioVersion이 설정되지 않은 경우 SDK40ToolsPath는 7.0A를 가리키지만 VisualStudioVersion이 11.0으로 설정된 경우 속성은 대신 8.0A를 가리킵니다.If VisualStudioVersion is unset, SDK40ToolsPath would point to 7.0A, but if VisualStudioVersion is set to 11.0, the property would instead point to 8.0A.

VisualStudioVersion 빌드 속성은 하위 도구 집합의 활성화 여부를 나타냅니다.The VisualStudioVersion build property indicates whether a sub-toolset becomes active. 예를 들어 "12.0"의 VisualStudioVersion 값은 MSBuild 12.0 하위 도구 집합을 지정합니다.For example, a VisualStudioVersion value of "12.0" specifies the MSBuild 12.0 sub-toolset. 자세한 내용은의 MSBuild 도구 집합(ToolsVersion)의 하위 도구 집합 섹션을 참조하세요.For more information, see the Sub-toolsets section of Toolset (ToolsVersion).

참고

이러한 설정을 변경하지 않는 것이 좋습니다.We recommend that you avoid changing these settings. 그럼에도 불구하고 고유한 설정을 추가하고 다음 섹션에 설명된 대로 컴퓨터 수준의 사용자 지정 도구 집합 정의를 정의할 수 있습니다.Nevertheless, you can add your own settings and define computer-wide custom toolset definitions, as the next section describes.

사용자 지정 도구 집합 정의Custom Toolset Definitions

표준 도구 집합이 빌드 요구 사항을 충족하지 않는 경우 사용자 지정 도구 집합을 만들 수 있습니다.When a standard Toolset does not fulfill your build requirements, you can create a custom Toolset. 예를 들어 Visual C++Visual C++ 프로젝트 빌드를 위해 별도 시스템이 있어야 하는 곳에 빌드 랩 시나리오를 가질 수 있습니다.For example, you may have a build lab scenario in which you must have a separate system for building Visual C++Visual C++ projects. 사용자 지정 도구 집합을 사용하여 프로젝트를 만들거나 MSBuild.exe를 실행할 때 ToolsVersion 특성에 사용자 지정 값을 할당할 수 있습니다.By using a custom Toolset, you can assign custom values to the ToolsVersion attribute when you create projects or run MSBuild.exe. 이 작업을 수행하여 해당 도구 집합을 사용하는 모든 프로젝트에 사용할 수 있는 사용자 고유의 사용자 지정 도구 집합 속성을 정의할 뿐만 아니라 $(MSBuildToolsPath) 속성을 사용하여 해당 디렉터리에서 .targets 파일을 가져올 수도 있습니다.By doing this, you can also use the $(MSBuildToolsPath) property to import .targets files from that directory, as well as defining your own custom toolset properties that can be used for any project that uses that toolset.

MSBuild.exe(또는 사용 중인 MSBuild 엔진을 호스팅하는 사용자 지정 도구)에 대한 구성 파일에 사용자 지정 도구 집합을 지정합니다.Specify a custom Toolset in the configuration file for MSBuild.exe (or for the custom tool that hosts the MSBuild engine if that is what you are using). 예를 들어 MSBuild.exe에 대한 구성 파일은 ToolsVersion 12.0의 기본 동작을 재정의하려는 경우 다음 도구 집합 정의를 포함할 수 있습니다.For example, the configuration file for MSBuild.exe could include the following Toolset definition if you wished to override the default behavior of ToolsVersion 12.0.

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

<msbuildToolsets>는 또한 다음과 같이 구성 파일에서 정의되어야 합니다.<msbuildToolsets> must also be defined in the configuration file, as follows.

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

참고

제대로 읽으려면 <configSections><configuration> 섹션에서 첫 번째 하위 섹션이어야 합니다.To be read correctly, <configSections> must be the first subsection in the <configuration> section.

ToolsetConfigurationSection은 사용자 지정 구성에 대한 MSBuild 호스트에서 사용할 수 있는 사용자 지정 구성 섹션입니다.ToolsetConfigurationSection is a custom configuration section that can be used by any MSBuild host for custom configuration. 사용자 지정 도구 집합을 사용하는 경우 호스트는 구성 파일 항목을 제공하기만 하면 빌드 엔진을 초기화하기 위해 아무 작업도 수행할 필요가 없습니다.If you use a custom Toolset, a host does not have to do anything to initialize the build engine except provide the configuration file entries. 레지스트리에서 항목을 정의하여 MSBuild.exe, Visual StudioVisual Studio 및 MSBuild의 모든 호스트에 적용되는 컴퓨터 수준 도구 집합을 지정할 수 있습니다.By defining entries in the registry, you can specify computer-wide Toolsets that apply to MSBuild.exe, Visual StudioVisual Studio, and all hosts of MSBuild.

참고

구성 파일이 레지스트리에 이미 정의된 ToolsVersion에 대한 설정을 정의하는 경우 두 개의 정의가 병합되지 않습니다.If a configuration file defines settings for a ToolsVersion that was already defined in the registry, the two definitions are not merged. 구성 파일의 정의가 우선 순위를 가지며 해당 ToolsVersion에 대한 레지스트리의 설정은 무시됩니다.The definition in the configuration file takes precedence and the settings in the registry for that ToolsVersion are ignored.

다음 속성은 프로젝트에 사용되는 ToolsVersion의 값에 관련됩니다.The following properties are specific to the value of ToolsVersion that is used in projects:

  • $(MSBuildBinPath)는 레지스트리 또는 ToolsVersion이 정의된 구성 파일에 지정된 ToolsPath 값으로 설정됩니다.$(MSBuildBinPath) is set to the ToolsPath value that is specified either in the registry or in the configuration file where the ToolsVersion is defined. 레지스트리 또는 구성 파일의 $(MSBuildToolsPath) 설정은 핵심 작업 및 대상의 위치를 지정합니다.The $(MSBuildToolsPath) setting in the registry or the configuration file specifies the location of the core tasks and targets. 프로젝트 파일에서 $(MSBuildBinPath) 속성 및 $(MSBuildToolsPath) 속성에 매핑됩니다.In the project file, this maps to the $(MSBuildBinPath) property, and also to the $(MSBuildToolsPath) property.

  • $(MSBuildToolsPath)는 구성 파일에 지정된 MSBuildToolsPath 속성에서 제공되는 예약된 속성입니다.$(MSBuildToolsPath) is a reserved property that is supplied by the MSBuildToolsPath property that is specified in the configuration file. (이 속성은 $(MSBuildBinPath)를 대체합니다.(This property replaces $(MSBuildBinPath). 그러나 $(MSBuildBinPath)가 호환성을 위해 전달됩니다.) 사용자 지정 도구 집합은 $(MSBuildToolsPath)$(MSBuildBinPath)가 동일한 값을 갖지 않는 한 둘 모두가 아닌 둘 중 하나를 정의해야 합니다.However, $(MSBuildBinPath) is carried forward for compatibility.) A custom toolset must define either $(MSBuildToolsPath) or $(MSBuildBinPath) but not both, unless they both have the same value.

    또한 MSBuildToolsPath 속성을 추가하는 데 사용하는 동일한 구문을 사용하여 구성 파일에 ToolsVersion 관련 사용자 지정 속성을 추가할 수도 있습니다.You can also add custom, ToolsVersion-specific properties to the configuration file by using the same syntax that you use to add the MSBuildToolsPath property. 이러한 사용자 지정 속성을 프로젝트 파일에 사용할 수 있도록 하려면 구성 파일에 지정된 값의 이름과 동일한 이름을 사용합니다.To make these custom properties available to the project file, use the same name as the name of the value that is specified in the configuration file. 구성 파일에서 하위 도구 집합이 아닌 도구 집합을 정의할 수 있습니다.You may define toolsets but not sub-toolsets in the configuration file.

참고 항목See Also

도구 집합(ToolsVersion)Toolset (ToolsVersion)