다음을 통해 공유


NuGet과 SDK를 프로젝트 참조로 비교

이 문서는 개발자가 소프트웨어를 NuGet 패키지로 패키지할지 아니면 SDK(소프트웨어 개발 키트)로 패키지할지 선택할 수 있도록 설계되었습니다. 특히 Visual Studio 프로젝트에서 참조될 때의 두 차이점에 대해 설명합니다.

  • NuGet 라이브러리를 프로젝트에 통합하는 프로세스를 간소화하는 오픈 소스 패키지 관리 시스템입니다. .NET(.NET Core 포함)의 경우 NuGet은 코드를 공유하기 위해 Microsoft에서 지원하는 메커니즘입니다. NuGet은 .NET용 패키지를 만들고, 호스트하고, 사용하는 방법을 정의하고, 이러한 각 역할에 대한 도구를 제공합니다. Visual Studio에서는 패키지 관리자 사용자 인터페이스를 사용하여 프로젝트에 NuGet 패키지를 추가합니다.

  • SDK Visual Studio에서 단일 참조 항목으로 취급하는 파일의 컬렉션입니다. Visual Studio의 참조 관리자 대화 상자에서는 참조 추가을 선택할 때 현재 프로젝트와 관련된 모든 SDK가 나열됩니다. 프로젝트에 SDK를 추가하면 IntelliSense, 도구 상자 창, 디자이너, 개체 브라우저, MSBuild, 배포, 디버깅 및 패키징을 통해 해당 SDK의 모든 콘텐츠에 액세스할 수 있습니다.

어떤 메커니즘을 사용해야 하나요?

다음 표에서는 SDK의 참조 기능을 NuGet의 참조 기능과 비교하는 데 도움이 됩니다.

특징 SDK 지원 SDK 노트 NuGet 지원 NuGet 참고 사항
메커니즘은 하나의 엔터티를 참조한 다음 모든 파일과 기능을 사용할 수 있습니다. Y 참조 관리자 대화 상자를 사용하여 SDK를 추가하면 개발 워크플로 중에 모든 파일과 기능을 사용할 수 있습니다. Y
MSBuild는 어셈블리 및 Windows 메타데이터(.winmd) 파일을 자동으로 사용합니다. Y SDK의 참조는 컴파일러에 자동으로 전달됩니다. Y
MSBuild는 .h 또는 .lib 파일을 자동으로 사용합니다. Y SDKName.props 파일은 자동 .h 또는 .lib 파일 사용을 위해 Visual C++ 디렉터리를 설정하는 방법 등을 Visual Studio에 알려줍니다. N
MSBuild는 .js 또는 .css 파일을 자동으로 사용합니다. Y 솔루션 탐색기JavaScript SDK 참조 노드를 확장하여 개별 .js 또는 .css 파일을 표시한 다음 해당 파일을 원본 파일로 끌어 <source include/> 태그를 생성할 수 있습니다. SDK는 F5 및 자동 패키지 설정을 지원합니다. Y
MSBuild는 도구 상자컨트롤을 자동으로 추가합니다. Y 도구 상자 SDK를 사용하고 지정한 탭에 컨트롤을 표시할 수 있습니다. N
이 메커니즘은 VSIX(Visual Studio Installer for Extensions)를 지원합니다. Y VSIX에는 SDK 패키지를 만드는 특수 매니페스트 및 논리가 있습니다. Y VSIX는 다른 설치 프로그램에 포함할 수 있습니다.
개체 브라우저 참조를 열거합니다. Y 개체 브라우저 자동으로 SDK의 참조 목록을 가져오고 열거합니다. N
파일 및 링크가 참조 관리자 대화 상자에 자동으로 추가됩니다(도움말 링크 등 자동 채우기) Y 참조 관리자 대화 상자는 도움말 링크 및 SDK 종속성 목록과 함께 SDK를 자동으로 열거합니다. N NuGet은 고유한 NuGet 패키지 관리 대화 상자를 제공합니다.
메커니즘은 여러 아키텍처를 지원합니다. Y SDK는 여러 구성을 제공할 수 있습니다. MSBuild는 각 프로젝트 구성에 적절한 파일을 사용합니다. N
메커니즘은 여러 구성을 지원합니다. Y SDK는 여러 구성을 제공할 수 있습니다. 프로젝트 아키텍처에 따라 MSBuild는 각 프로젝트 아키텍처에 적절한 파일을 사용합니다. N
메커니즘은 "복사 안 함"을 지정할 수 있습니다. Y 파일이 \redist 또는 \designtime 폴더에 삭제되는지 여부에 따라 사용 중인 애플리케이션의 패키지에 복사할 파일을 제어할 수 있습니다. N 패키지 매니페스트에서 복사할 파일을 선언합니다.
콘텐츠가 지역화된 파일에 나타납니다. Y 더 나은 디자인 타임 환경을 위해 SDK의 지역화된 XML 문서가 자동으로 포함됩니다. N
MSBuild는 여러 버전의 SDK를 동시에 사용할 수 있습니다. Y SDK는 여러 버전을 동시에 사용할 수 있습니다. N 이는 참조되지 않습니다. 프로젝트에 한 번에 둘 이상의 NuGet 파일을 가질 수 없습니다.
이 메커니즘은 적용 가능한 대상 프레임워크, Visual Studio 버전 및 프로젝트 형식 지정을 지원합니다. Y 참조 관리자 대화 상자와 도구 상자 프로젝트에 적용되는 SDK만 표시하므로 사용자가 적절한 SDK를 더 쉽게 선택할 수 있습니다. Y(부분) 피벗은 대상 프레임워크입니다. 사용자 인터페이스에 대한 필터링이 없습니다. 설치 시 오류가 반환될 수 있습니다.
메커니즘은 네이티브 WinMD에 대한 등록 정보 지정을 지원합니다. Y .winmd 파일과 SDKManifest.xml.dll 파일 간의 상관 관계를 지정할 수 있습니다. N
이 메커니즘은 다른 SDK에 대한 종속성 지정을 지원합니다. Y SDK는 사용자에게 알리기만 하며, 사용자는 여전히 설치하고 수동으로 참조해야 합니다. Y NuGet은 자동으로 끌어온다. 사용자에게 알림이 표시되지 않습니다.
이 메커니즘은 앱 매니페스트 및 프레임워크 ID와 같은 Microsoft Store 개념과 통합됩니다. Y SDK는 Store와 관련된 개념을 전달하여 패키징 및 F5가Store에서 사용할 수 있는 SDK와 올바르게 작동하도록 해야 합니다. N
이 메커니즘은 Windows 8.x 스토어 앱용 앱 디버깅 파이프라인과 통합됩니다. Y 패키징 및 F5가 스토어에서 사용할 수 있는 SDK와 올바르게 작동하려면 SDK가 Store 관련 개념을 전달해야 합니다. Y NuGet 콘텐츠는 프로젝트의 일부가 됩니다. 특별한 F5 고려 사항은 필요하지 않습니다.
메커니즘은 앱 매니페스트와 통합됩니다. Y 패키징 및 F5가 스토어에서 사용할 수 있는 SDK와 올바르게 작동하려면 SDK가 Store 관련 개념을 전달해야 합니다. Y NuGet 콘텐츠는 프로젝트의 일부가 됩니다. 특별한 F5 고려 사항은 필요하지 않습니다.
이 메커니즘은 참조가 아닌 파일을 배포합니다(예: Windows 8.x 스토어 앱의 테스트를 실행할 테스트 프레임워크 배포). Y 파일을 \redist 폴더에 놓으면 파일이 자동으로 배포됩니다. Y
이 메커니즘은 Visual Studio IDE에서 플랫폼 SDK를 자동으로 추가합니다. Y 특정 레이아웃이 있는 특정 위치에 Windows 8 SDK 또는 Windows Phone SDK를 삭제하면 SDK가 모든 Visual Studio 기능과 자동으로 통합됩니다. N
이 메커니즘은 깨끗한 개발자 컴퓨터를 지원합니다. 즉, 설치가 필요하지 않으며 소스 코드 제어에서 간단한 검색이 작동합니다. N SDK를 참조하기 때문에 솔루션과 SDK를 별도로 체크 인해야 합니다. MSBuild가 SDK를 반복하는 두 개의 비 레지스트리 기본 위치에서 SDK를 체크 인할 수 있습니다(자세한 내용은 소프트웨어 개발 키트 만들기참조). 또는 사용자 지정 위치가 SDK로 구성된 경우 프로젝트 파일에서 다음 코드를 지정할 수 있습니다.

<PropertyGroup>
  <SDKReferenceDirectoryRoot>
  C:\MySDKs
  </SDKReferenceDirectoryRoot>
</PropertyGroup>

그런 다음 해당 위치에 SDK를 확인합니다.
Y 솔루션을 체크 아웃할 수 있으며 Visual Studio는 파일을 즉시 인식하고 작동합니다.
패키지 작성자의 대규모 기존 커뮤니티에 가입할 수 있습니다. 해당 (N/A) 커뮤니티는 새로운 것입니다. Y
패키지 소비자의 대규모 기존 커뮤니티에 가입할 수 있습니다. 해당 없음 커뮤니티는 새로운 것입니다. Y
파트너의 에코시스템(사용자 지정 갤러리, 리포지토리 등)에 가입할 수 있습니다. 해당 없음 사용 가능한 리포지토리에는 Visual Studio Marketplace, Microsoft 다운로드 센터 및 Microsoft Store가 포함됩니다. Y
이 메커니즘은 패키지 만들기 및 사용 모두에 대한 연속 통합 빌드 서버와 통합됩니다. Y SDK는 명령줄의 체크 인 위치(SDKReferenceDirectoryRoot 속성)를 MSBuild에 전달해야 합니다. Y
이 메커니즘은 안정적인 패키지 버전과 시험판 패키지 버전을 모두 지원합니다. Y SDK는 여러 버전에 대한 참조 추가를 지원합니다. Y
이 메커니즘은 설치된 패키지에 대한 자동 업데이트를 지원합니다. Y VSIX 또는 Visual Studio 자동 업데이트의 일부로 제공되는 경우 SDK는 자동 알림을 제공합니다. Y
메커니즘에는 패키지를 만들고 소비하기 위한 독립 실행형 .exe 파일이 포함되어 있습니다. Y SDK에는 MSBuild.exe포함됩니다. Y
패키지는 버전 제어에 체크 인할 수 있습니다. Y 문서 노드 외부에서는 아무것도 체크 인할 수 없습니다. 즉, 확장 SDK가 체크 인되지 않을 수 있습니다. 확장 SDK의 크기가 클 수 있습니다. Y
PowerShell 인터페이스를 사용하여 패키지를 만들고 사용할 수 있습니다. Y(소비), N(생성) SDK를 만들기 위한 도구가 없습니다. 소모는 명령줄에서 MSBuild를 실행하는 것입니다. Y
디버깅 지원에 기호 패키지를 사용할 수 있습니다. Y SDK에 .pdb 파일을 드래그해서 놓으면 파일이 자동으로 처리됩니다. Y
이 메커니즘은 패키지 관리자 자동 업데이트를 지원합니다. 해당 없음 SDK는 MSBuild를 사용하여 수정됩니다. Y
이 메커니즘은 간단한 매니페스트 형식을 지원합니다. Y SDKManifest.xml 많은 특성을 지원하지만 일반적으로 작은 하위 집합이 필요합니다. Y
이 메커니즘은 모든 Visual Studio 버전에서 사용할 수 있습니다. Y SDK는 모든 Visual Studio 버전을 지원합니다. Y NuGet은 모든 Visual Studio 버전을 지원합니다.