.NET SDK와 같은 개발 기술 스택에 필요한 모든 빌드 인프라는 특정 ID로 프로젝트 SDK 라고 하는 속성 및 대상 집합을 참조하기만 하면 됩니다. ID는 속성 정의가 포함된 특정 파일 집합 .props
과 .targets
대상 정의를 포함하는 파일을 참조합니다. 최상위 프로젝트 노드의 Sdk
특성을 사용하여 프로젝트 SDK를 참조합니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
</Project>
프로젝트를 평가하는 동안 MSBuild는 프로젝트 파일의 위쪽과 아래쪽에 암시적 가져오기를 추가합니다.
<Project>
<!-- Implicit top import -->
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
<!-- Implicit bottom import -->
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
</Project>
Microsoft에서 배포하는 많은 SDK가 있습니다. 이전 예제에서 참조된 프로젝트 SDK에는 모니커가 있습니다 Microsoft.NET.Sdk
. .NET Core 및 .NET 5 이상과 연결된 프로젝트 SDK는 .NET Project SDK 개요에 나열됩니다.
프로젝트 SDK 참조
프로젝트 SDK를 참조하는 세 가지 방법이 있습니다.
요소의 Sdk
특성 Project
사용
<Project Sdk="My.Custom.Sdk">
...
</Project>
암시적 가져오기는 앞에서 설명한 대로 프로젝트의 위쪽과 아래쪽에 추가됩니다.
특정 버전의 SDK를 지정하려면 특성에 Sdk
추가합니다.
<Project Sdk="My.Custom.Sdk/1.2.3">
...
</Project>
최상위 Sdk
요소 사용
<Project>
<Sdk Name="My.Custom.Sdk" Version="1.2.3" />
...
</Project>
암시적 가져오기는 앞에서 설명한 대로 프로젝트의 위쪽과 아래쪽에 추가됩니다.
Version
특성은 필요하지 않습니다.
Import
프로젝트의 아무 곳이나 요소 사용
<Project>
<PropertyGroup>
<MyProperty>Value</MyProperty>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="My.Custom.Sdk" />
...
<Import Project="Sdk.targets" Sdk="My.Custom.Sdk" />
</Project>
프로젝트에 가져오기를 명시적으로 포함하면 주문을 완전히 제어할 수 있습니다.
요소를 사용하는 Import
경우 선택적 Version
특성도 지정할 수 있습니다. 예를 들어 <Import Project="Sdk.props" Sdk="My.Custom.Sdk" Version="1.2.3" />
를 지정할 수 있습니다.
경고
요소를 사용하도록 Import
프로젝트를 변경하는 경우 둘 다 .props
추가하고 .targets
가져오고 요소와 요소 Project
에서 SDK를 Sdk
제거해야 합니다. 이렇게 하지 않으면 이중 가져오기 및 경고가 MSB4011
발생합니다.
프로젝트 SDK를 확인하는 방법
가져오기를 평가할 때 MSBuild는 지정한 이름과 버전에 따라 프로젝트 SDK의 경로를 동적으로 확인합니다. MSBuild에는 컴퓨터에서 프로젝트 SDK를 찾는 플러그 인인 등록된 SDK 확인자 목록도 있습니다. 이러한 플러그 인은 다음과 같습니다.
지정한 SDK의 ID 및 버전과 일치하는 NuGet 패키지에 대해 구성된 패키지 피드를 쿼리하는 NuGet 기반 확인자입니다.
이 확인자는 선택적 버전을 지정한 경우에만 활성화됩니다. 사용자 지정 프로젝트 SDK에 사용할 수 있습니다.
.NET SDK와 함께 설치된 MSBuild SDK를 확인하는 .NET SDK 확인자입니다.
이 확인자는 제품의 일부인
Microsoft.NET.Sdk
프로젝트Microsoft.NET.Sdk.Web
SDK를 찾습니다.MSBuild와 함께 설치된 SDK를 확인하는 기본 해결 프로그램입니다.
NuGet 기반 SDK 확인자는 global.json 파일에서 버전 지정을 지원하므로 각 개별 프로젝트가 아닌 한 곳에서 프로젝트 SDK 버전을 제어할 수 있습니다.
{
"msbuild-sdks": {
"My.Custom.Sdk": "5.0.0",
"My.Other.Sdk": "1.0.0-beta"
}
}
빌드하는 동안에는 각 프로젝트 SDK의 버전 하나만 사용할 수 있습니다. 동일한 프로젝트 SDK의 서로 다른 두 버전을 참조하는 경우 MSBuild는 경고를 내보낸다. global.json 파일에 버전 이 지정된 경우 프로젝트에서 버전을 지정하지 않는 것이 좋습니다.
관련 콘텐츠
- MSBuild 개념
- 빌드를 사용자 정의하기
- 패키지, 메타데이터 및 프레임워크
- .NET SDK 프로젝트 대한 MSBuild 참조