NuGet을 사용한 참조 추가와 확장명 SDK를 사용한 참조 추가Adding References Using NuGet Versus an Extension SDK

Visual Studio에 대한 NuGet 확장 또는 SDK(소프트웨어 개발 키트)를 사용하여 Visual Studio 프로젝트 내에서 사용할 패키지를 제공할 수 있습니다.You can provide a package for consumption within Visual Studio projects by using either the NuGet extension to Visual Studio or a software development kit (SDK). 이 항목에서 설명하는 두 메커니즘 간의 유사점과 차이점을 참조하여 작업에 가장 적합한 메커니즘을 선택할 수 있습니다.By describing the similarities and differences between the two mechanisms, this topic can help you choose the best one for your task.

  • NuGet은 프로젝트 솔루션에 라이브러리를 통합하는 과정을 간소화하는 오픈 소스 패키지 관리 시스템입니다.NuGet is an open-source, package-management system that simplifies the process of incorporating libraries into a project solution. 자세한 내용은 NuGet 설명서를 참조하세요.For more information, see the NuGet documentation.

  • SDK는 Visual Studio에서 단일 참조 항목으로 처리하는 파일 컬렉션입니다.An SDK is a collection of files that Visual Studio treats as a single reference item. 참조 관리자 대화 상자에는 해당 대화 상자를 표시할 때 열려 있던 프로젝트에 관련된 모든 SDK가 나열됩니다.The Reference Manager dialog box lists all SDKs that are relevant to the project that's open when you display that dialog box. 프로젝트에 SDK를 추가하면 IntelliSense, 도구 상자, 디자이너, 개체 브라우저, MSBuild, 배포, 디버깅 및 패키징을 통해 해당 SDK의 모든 내용에 액세스할 수 있습니다.When you add an SDK to a project, you can access all of the contents of that SDK through IntelliSense, the Toolbox, designers, the Object Browser, MSBuild, deployment, debugging, and packaging. SDK에 대한 자세한 내용은 소프트웨어 개발 키트 만들기를 참조하세요.For more information about SDKs, see Creating a Software Development Kit.

어떤 메커니즘을 사용해야 하나요?Which Mechanism Should I Use?

다음 표에서는 SDK의 참조 기능과 NuGet의 참조 기능을 비교합니다.The following table helps you compare the referencing features of an SDK with the referencing features of NuGet.

기능Feature SDK 지원SDK Support SDK 참고 사항SDK Notes NuGet 지원NuGet Support NuGet 참고 사항NuGet Notes
메커니즘에서 하나의 엔터티를 참조하면 모든 파일과 기능을 사용할 수 있습니다.The mechanism references one entity and then all the files and functionality are available. 지원Y 참조 관리자 대화 상자를 사용하여 SDK를 추가하면 개발 워크플로 중에 모든 파일과 기능을 사용할 수 있습니다.You add an SDK by using the Reference Manager dialog box, and all the files and functionality are available during the development workflow. 지원Y
MSBuild에서 어셈블리와 Windows 메타데이터(.winmd) 파일을 자동으로 사용합니다.MSBuild automatically consumes assemblies and Windows metadata (.winmd) files. YY SDK의 참조가 컴파일러에 자동으로 전달됩니다.References in the SDK are automatically passed to the compiler. YY
MSBuild에서 .h 또는 .lib 파일을 자동으로 사용합니다.MSBuild automatically consumes the .h or .lib files. 지원Y .h 또는 .lib 파일을 자동으로 사용하기 위한 Visual C++ 디렉터리 설정 방법 등이 SDKName.props 파일을 통해 Visual Studio에서 지정됩니다.The SDKName.props file tells Visual Studio how to set up the Visual C++ directory, and so forth, for automatic .h or .lib file consumption. NN
MSBuild에서 .js 또는 .css 파일을 자동으로 사용합니다.MSBuild automatically consumes the .js or .css files. 지원Y 솔루션 탐색기에서 JavaScript SDK 참조 노드를 확장하여 개별 .js 또는 .css 파일을 표시한 다음 해당 파일을 소스 파일로 끌어 <source include/> 태그를 생성할 수 있습니다.In Solution Explorer, you can expand the JavaScript SDK reference node to show individual .js or .css files and then generate <source include/> tags by dragging those files to their source files. SDK에서 F5 키와 자동 패키지 설치를 지원합니다.The SDK supports F5 and automatic package setup. 지원Y
MSBuild에서 도구 상자에 컨트롤을 자동으로 추가합니다.MSBuild automatically adds the control in the Toolbox. 지원Y 도구 상자에서 SDK를 사용하고 지정된 탭에 컨트롤을 표시할 수 있습니다.The Toolbox can consume SDKs and show controls in the tabs that you specify. NN
메커니즘에서 VSIX(확장용 Visual Studio 설치 관리자)를 지원합니다.The mechanism supports Visual Studio Installer for extensions (VSIX). YY VSIX에 SDK 패키지를 만들기 위한 특수 매니페스트 및 논리가 있습니다.VSIX has a special manifest and logic to create SDK packages YY 다른 설치 프로그램에 VSIX를 포함할 수 있습니다.The VSIX can be embedded in another setup program.
개체 브라우저에 참조가 열거됩니다.The Object Browser enumerates references. 지원Y 개체 브라우저에서 자동으로 SDK의 참조 목록을 가져와서 열거합니다.The Object Browser automatically gets the list of references in SDKs and enumerates them. NN
파일 및 링크가 참조 관리자 대화 상자에 자동으로 추가됩니다(도움말 링크 등의 자동 채우기).Files and links automatically get added to the Reference Manager dialog box (help links, and so forth auto populate) 지원Y 참조 관리자 대화 상자에 SDK가 도움말 링크 및 SDK 종속성 목록과 함께 자동으로 열거됩니다.The Reference Manager dialog box automatically enumerates SDKs, along with help links and the list of SDK dependencies. NN NuGet은 고유한 NuGet 패키지 관리 대화 상자를 제공합니다.NuGet provides its own Manage NuGet Packages dialog box.
메커니즘에서 여러 아키텍처를 지원합니다.The mechanism supports multiple architectures. YY SDK는 여러 구성을 제공할 수 있습니다.SDKs can ship multiple configurations. MSBuild에서 각 프로젝트 구성에 적합한 파일을 사용합니다.MSBuild consumes the appropriate files for each project configuration. NN
메커니즘에서 여러 구성을 지원합니다.The mechanism supports multiple configurations. YY SDK는 여러 구성을 제공할 수 있습니다.SDKs can ship multiple configurations. 프로젝트 아키텍처에 따라 MSBuild에서 각 프로젝트 아키텍처에 적합한 파일을 사용합니다.Depending on project architecture, MSBuild consumes the appropriate files for each project architecture. NN
메커니즘에서 “복사하지 않을 항목”을 지정할 수 있습니다.The mechanism can specify "not to copy." YY \redist 또는 \designtime 폴더에 파일을 넣는지에 따라 소비 응용 프로그램 패키지에 복사할 파일을 제어할 수 있습니다.Depending on whether files are dropped in the \redist or \designtime folder, you can control which files to copy into the consuming application's package. NN 패키지 매니페스트에서 복사할 파일을 선언합니다.You declare which files to copy in the package manifest.
콘텐츠가 지역화된 파일에 표시됩니다.Content appears in localized files. YY 디자인 타임 환경 개선을 위해 SDK의 지역화된 XML 문서가 자동으로 포함됩니다.Localized XML documents in SDKs are automatically included for a better design-time experience. NN
MSBuild에서 동시에 여러 버전의 SDK를 사용할 수 있도록 지원합니다.MSBuild supports consuming multiple versions of an SDK simultaneously. YY SDK에서 동시에 여러 버전을 사용할 수 있도록 지원합니다.The SDK supports consuming multiple versions simultaneously. NN 참조가 아닙니다.This isn't referencing. 프로젝트에 여러 버전의 NuGet 파일을 동시에 사용할 수 없습니다.You can't have more than one version of NuGet files in your project at a time.
메커니즘에서 해당하는 대상 프레임워크, Visual Studio 버전 및 프로젝트 형식을 지정할 수 있도록 지원합니다.The mechanism supports specifying applicable target frameworks, Visual Studio versions, and project types. 지원Y 사용자가 적절한 SDK를 쉽게 선택할 수 있도록 프로젝트에 적용되는 SDK만 참조 관리자 대화 상자와 도구 상자에 표시됩니다.The Reference Manager dialog box and the Toolbox show only the SDKs that apply to a project, so that users can more easily choose the appropriate SDKs. Y(부분)Y (partial) 피벗이 대상 프레임워크입니다.Pivot is the Target Framework. 사용자 인터페이스에 필터링이 없습니다.There is no filtering on user interface. 설치 시 오류가 반환될 수도 있습니다.At installation time, it might return an error.
메커니즘에서 네이티브 WinMD에 대한 등록 정보를 지정할 수 있도록 지원합니다.The mechanism supports specifying registration info for native WinMDs. YY SDKManifest.xml에서 .winmd 파일과 .dll 파일 간의 상관 관계를 지정할 수 있습니다.You can specify the correlation between the .winmd file and the .dll file in SDKManifest.xml. NN
메커니즘에서 다른 SDK에 대한 종속성을 지정할 수 있도록 지원합니다.The mechanism supports specifying dependencies on other SDKs. YY SDK는 사용자에게 알림만 제공하며, 사용자가 설치하고 수동으로 참조해야 합니다.The SDK only notifies the user; the user must still install them and reference them manually. YY NuGet이 자동으로 끌어오며 사용자에게 알리지 않습니다.NuGet pulls them automatically; the user isn't notified.
메커니즘이 앱 매니페스트 및 프레임워크 ID와 같은 Microsoft 스토어Microsoft Store 개념과 통합됩니다.The mechanism integrates with Microsoft 스토어Microsoft Store concepts such as app manifest and Framework ID. YY 패키징 및 F5 키가 스토어Store를 통해 제공되는 SDK에서 제대로 작동하도록 SDK가 스토어Store 관련 개념을 전달해야 합니다.The SDK must pass concepts that are specific to the 스토어Store so that packaging and F5 work correctly with SDKs that are available in the스토어Store. NN
메커니즘이 Windows 8.x 스토어Windows 8.x Store 앱에 대한 앱 디버깅 파이프라인과 통합됩니다.The mechanism integrates with the app debugging pipeline for Windows 8.x 스토어Windows 8.x Store apps. YY 패키징 및 F5 키가 스토어Store를 통해 제공되는 SDK에서 제대로 작동하도록 SDK가 스토어Store 관련 개념을 전달해야 합니다.The SDK must pass 스토어Store-specific concepts so that packaging and F5 work correctly with SDKs available in the 스토어Store. YY NuGet 콘텐츠는 프로젝트의 일부가 됩니다.NuGet content becomes part of the project. F5 키를 특별히 고려하지 않아도 됩니다.No special F5 consideration is needed.
메커니즘이 앱 매니페스트와 통합됩니다.The mechanism integrates with app manifests. YY 패키징 및 F5 키가 스토어Store를 통해 제공되는 SDK에서 제대로 작동하도록 SDK가 스토어Store 관련 개념을 전달해야 합니다.The SDK must pass 스토어Store-specific concepts so that packaging and F5 work correctly with SDKs available in the 스토어Store. YY NuGet 콘텐츠는 프로젝트의 일부가 됩니다.NuGet content becomes part of the project. F5 키를 특별히 고려하지 않아도 됩니다.No special F5 consideration is needed.
메커니즘에서 비참조 파일을 배포합니다(예: Windows 8.x 스토어Windows 8.x Store 앱 테스트를 실행할 테스트 프레임워크 배포).The mechanism deploys non-reference files (for example, deploy test framework upon which to run tests of Windows 8.x 스토어Windows 8.x Store apps). YY \redist 폴더에 파일을 넣는 경우 파일이 자동으로 배포됩니다.If you drop the files in the \redist folder, the files are automatically deployed. YY
메커니즘에서 플랫폼 SDK를 Visual Studio IDE에 자동으로 추가합니다.The mechanism automatically adds the platform SDKs in Visual Studio IDE. YY Windows 8Windows 8 SDK 또는 Windows Phone SDK를 특정 위치에 특정 레이아웃으로 넣는 경우 SDK가 모든 Visual Studio 기능과 자동으로 통합됩니다.If you drop the Windows 8Windows 8 SDK or the Windows Phone SDK in a specific location with a specific layout, the SDK is automatically integrated with all the Visual Studio features. NN
메커니즘에서 클린 개발자 컴퓨터를 지원합니다.The mechanism supports a clean developer machine. 즉, 설치할 필요가 없으며 소스 코드 제어에서 간단하게 검색할 수 있습니다.(That is, no installation is required, and simple retrieval from source code control will work.) NN SDK를 참조하기 때문에 솔루션과 SDK를 별도로 체크 인해야 합니다.Because you reference an SDK, you must check in your solution and the SDK separately. MSBuild가 SDK를 반복하는, 레지스트리가 아닌 두 개의 기본 위치에서 SDK를 체크 인할 수 있습니다(자세한 내용은 소프트웨어 개발 키트 만들기 참조).You can check in the SDK from the two non-registry default locations from which MSBuild iterates SDKs (for details, see Creating a Software Development Kit). 또는 사용자 지정 위치가 SDK로 구성된 경우 프로젝트 파일에서 다음 코드를 지정할 수 있습니다.As an alternative, if a custom location consists of the SDKs, you can specify the following code in the project file:

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

그런 다음 해당 위치에 SDK를 체크 인합니다.Then check the SDKs into that location.
YY 솔루션을 체크 아웃하면 Visual Studio에서 즉시 파일을 인식하고 작업을 수행합니다.You can check out the solution, and Visual Studio immediately recognizes and acts on the files.
기존의 대규모 패키지 작성자 커뮤니티에 연결할 수 있습니다.You can join a large existing community of package authors. N/AN/A 커뮤니티는 새로운 기능입니다.The community is new. YY
기존의 대규모 패키지 소비자 커뮤니티에 연결할 수 있습니다.You can join a large existing community of package consumers. N/AN/A 커뮤니티는 새로운 기능입니다.The community is new. YY
파트너 에코시스템(사용자 지정 갤러리, 리포지토리 등)에 연결할 수 있습니다.You can join an ecosystem of partners (custom galleries, repositories, and so forth). N/AN/A 사용 가능한 리포지토리로는 Visual Studio Marketplace, Microsoft 다운로드 센터, Microsoft 스토어Microsoft Store 등이 있습니다.The available repositories include Visual Studio Marketplace, Microsoft Download Center, and Microsoft 스토어Microsoft Store. YY
패키지 생성 및 사용 둘 다를 위해 메커니즘이 연속 통합 빌드 서버와 통합됩니다.The mechanism integrates with continuous-integration build servers for both package creation and consumption. YY SDK에서 명령줄을 통해 체크 인된 위치(SDKReferenceDirectoryRoot 속성)를 MSBuild에 전달해야 합니다.The SDK must pass the checked-in location (SDKReferenceDirectoryRoot property) on command line to MSBuild. YY
메커니즘에서 안정적인 패키지 버전과 시험판 패키지 버전을 둘 다 지원합니다.The mechanism supports both stable and pre-release package versions. YY SDK에서 여러 버전에 대한 참조 추가를 지원합니다.The SDK supports adding references to multiple versions. YY
메커니즘에서 설치된 패키지에 대한 자동 업데이트를 지원합니다.The mechanism supports auto-update for installed packages. YY VSIX 또는 Visual Studio 자동 업데이트의 일부로 제공된 경우 SDK에서 자동 알림을 제공합니다.If shipped as VSIX or part of Visual Studio automatic updates, SDK provides automatic notifications. YY
메커니즘에 패키지 생성 및 사용을 위한 독립 실행형 .exe 파일이 포함됩니다.The mechanism contains a stand-alone .exe file for creating and consuming packages. YY SDK에 MSBuild.exe가 포함됩니다.The SDK contains MSBuild.exe. YY
패키지를 버전 제어에 체크 인할 수 있습니다.Packages can be checked into version control. YY 문서 노드 외부에서 아무것도 체크 인할 수 없으므로 확장 SDK를 체크 인하지 못할 수도 있습니다. 확장 SDK의 크기가 클 수 있습니다.You can't check in anything outside the Documents node, which means that the Extension SDKs might not be checked in.The size of Extension SDK might be large. YY
PowerShell 인터페이스를 사용하여 패키지를 만들고 사용할 수 있습니다.You can use a PowerShell interface to create and consume packages. Y(사용), N(만들기)Y (consumption), N (creation) SDK를 만들기 위한 도구가 없습니다.No tooling for creating an SDK. 사용하려면 명령줄에서 MSBuild를 실행합니다.Consumption is executing MSBuild on the command line. YY
디버깅 지원을 위해 기호 패키지를 사용할 수 있습니다.You can use a Symbol package for debugging support. YY SDK에 .pdb 파일을 넣으면 파일이 자동으로 선택됩니다.If you drop .pdb files in the SDK, the files get picked up automatically. YY
메커니즘에서 패키지 관리자 자동 업데이트를 지원합니다.The mechanism supports package manager auto-updates. N/AN/A SDK가 MSBuild로 수정됩니다.The SDK gets revised with MSBuild. YY
메커니즘에서 경량 매니페스트 형식을 지원합니다.The mechanism supports a lightweight manifest format. YY SDKManifest.xml에서 많은 특성을 지원하지만 일반적으로 작은 하위 집합만 있으면 됩니다.SDKManifest.xml supports many attributes, but a small subset is usually necessary. YY
모든 Visual Studio 버전에 메커니즘을 사용할 수 있습니다.The mechanism is available for all Visual Studio editions. YY SDK에서 Visual Studio Express부터 Visual Studio UltimateVisual Studio Ultimate까지 모든 Visual Studio 버전을 지원합니다.The SDK supports all Visual Studio editions, from Visual Studio Express through Visual Studio UltimateVisual Studio Ultimate. YY NuGet에서 Express부터 Visual Studio UltimateVisual Studio Ultimate까지 모든 Visual Studio 버전을 지원합니다.NuGet supports all Visual Studio editions, Express up through Visual Studio UltimateVisual Studio Ultimate.
모든 프로젝트 형식에 메커니즘을 사용할 수 있습니다.The mechanism is available for all project types. NN SDK에서 Visual Studio 2012Visual Studio 2012부터 Windows 8.x 스토어Windows 8.x Store 앱을 지원합니다.The SDK supports Windows 8.x 스토어Windows 8.x Store apps starting in Visual Studio 2012Visual Studio 2012. NN 허용된 프로젝트 목록을 검토할 수 있습니다.You can review a list of allowed projects.

참고 항목See also

프로젝트의 참조 관리Managing references in a project