NuGet 2.7 릴리스 정보
WebMatrix 릴리스 정보 | NuGet 2.7.1용 NuGet 2.6.1 릴리스 정보
NuGet 2.7은 2013년 8월 22일에 릴리스되었습니다.
NuGet 2.7에 대한 중요한 기여 다음과 같은 외부 기여자 감사드립니다.
[Mike Roth](http://www.codeplex.com/site/users/view/mxrss)
(@mxrss)- 패키지 및 세부 정보를 나열할 때 라이선스 URL을 표시합니다.
[Adam Ralph](http://www.codeplex.com/site/users/view/adamralph)
(@adamralph)[#1956](http://nuget.codeplex.com/workitem/1956)
- developmentDependency 특성을packages.config
팩 명령에 추가하고 이를 사용하여 런타임 패키지만 포함
[Rafael Nicoletti](http://www.codeplex.com/site/users/view/tkrafael)
(@tkrafael)- nuget.exe pack 명령에서 중복 속성 키를 사용하지 않습니다.
[Ben Phegan](http://www.codeplex.com/site/users/view/benphegan)
(@BenPhegan)[#2610](http://nuget.codeplex.com/workitem/2610)
- 컴퓨터 캐시 크기를 200으로 늘입니다.
[Slava Trenogin](http://www.codeplex.com/site/users/view/derigel)
(@derigel)[#3217](http://nuget.codeplex.com/workitem/3217)
- 잘못된 탭에 업데이트를 표시하는 NuGet 대화 상자 수정- ProjectManager에서 Project.TargetFramework가 null일 수 있는 수정
[#3248](http://nuget.codeplex.com/workitem/3248)
- 존재하지 않는 packageId에서 SharedPackageRepository FindPackage/FindPackagesById가 실패하는 문제를 해결합니다.
[Kevin Boyle](http://www.codeplex.com/site/users/view/KevinBoyleRG)
(@kevfromireland)[#3234](http://nuget.codeplex.com/workitem/3234)
- Nomad 프로젝트에 대한 지원 사용
[Corin Blaikie](http://www.codeplex.com/site/users/view/corinblaikie)
(@corinblaikie)[#3252](http://nuget.codeplex.com/workitem/3252)
- 파일이 없을 때 종료 코드 0으로 푸시 명령이 실패하는 문제를 해결합니다.
[Martin Veselý](http://www.codeplex.com/site/users/view/veselkamartin)
[#3226](http://nuget.codeplex.com/workitem/3226)
- 프로젝트에서 데이터베이스 프로젝트를 참조할 때 Add-BindingRedirect 명령을 사용하여 버그를 수정합니다.
[Miroslav Bajtos](http://www.codeplex.com/site/users/view/miroslavbajtos)
(@bajtos)[#2891](http://nuget.codeplex.com/workitem/2891)
- 'exclude' 특성에서 nuget.pack 구문 분석 wild카드 버그를 잘못 수정합니다.
[Justin Dearing](http://www.codeplex.com/site/users/view/zippy1981)
(@zippy1981)[#3307](http://nuget.codeplex.com/workitem/3307)
- 패키지를 복원할 때 버그NuGet.targets
가 $(Platform)를 nuget.exe 전달하지 않습니다.
[Brian Federici](http://www.codeplex.com/site/users/view/benerdin)
[#3294](http://nuget.codeplex.com/workitem/3294)
- 이름이 같지만 대/소문자가 다른 파일을 추가할 수 있는 nuget.exe 패키지 명령의 버그를 수정하여 결국 "항목이 이미 있음" 예외가 발생합니다.
[Daniel Cazzulino](http://www.codeplex.com/site/users/view/dcazzulino)
(@kzu)[#2990](http://nuget.codeplex.com/workitem/2990)
- NetPortableProfile 클래스에 Version 속성을 추가합니다.
[David Simner](https://www.codeplex.com/site/users/view/DavidSimner)
[#3460](https://nuget.codeplex.com/workitem/3460)
- requireApiKey = true이지만 헤더 X-NUGET-APIKEY가 없는 경우 버그 NullReferenceException 수정
[Michael Friis](https://www.codeplex.com/site/users/view/friism)
(@friism)[#3278](https://nuget.codeplex.com/workitem/3278)
- MonoDevelop에서 올바르게 작동하도록 NuGet.Build 대상 파일을 수정합니다.
[Pranav Krishnamoorthy](https://www.codeplex.com/site/users/view/pranavkm)
(@pranav_km)- 병렬 처리를 늘려 복원 명령 성능 향상
NuGet 2.7은 패키지 복원에 대한 새로운 접근 방식을 도입하고 주요 장애물을 극복합니다. 패키지 복원 동의는 기본적으로 설정됩니다. 새 접근 방식과 암시적 동의의 조합은 패키지 복원 시나리오를 크게 간소화합니다.
NuGet 버전 2.0, 2.1, 2.2, 2.5 및 2.6에서는 사용자가 빌드 중에 NuGet이 누락된 패키지를 다운로드하도록 명시적으로 허용해야 했습니다. 이 동의가 명시적으로 제공되지 않은 경우 사용자가 동의를 부여할 때까지 패키지 복원을 사용하도록 설정한 솔루션이 빌드되지 않습니다.
NuGet 2.7부터 패키지 복원 동의는 기본적으로 ON이며 사용자가 원하는 경우 Visual Studio의 NuGet 설정에 있는 검사 상자를 사용하여 패키지 복원을 명시적으로 옵트아웃할 수 있습니다. 암시적 동의에 대한 이러한 변경은 다음 환경의 NuGet에 영향을 줍니다.
- Visual Studio 2013 Preview
- Visual Studio 2012
- Visual Studio 2010
- nuget.exe 명령줄 유틸리티
NuGet 2.7부터 NuGet은 솔루션에 대해 패키지 복원을 명시적으로 사용하도록 설정하지 않은 경우에도 Visual Studio에서 빌드하는 동안 누락된 패키지를 자동으로 다운로드합니다. 이 자동 패키지 복원은 프로젝트 또는 솔루션을 빌드할 때 MSBuild가 호출되기 전에 Visual Studio에서 발생합니다. 이렇게 하면 다음과 같은 몇 가지 중요한 이점이 있습니다.
- 솔루션에서 "NuGet 패키지 복원 사용" 제스처를 더 이상 사용할 필요가 없습니다.
- 프로젝트를 수정할 필요가 없으며 NuGet은 패키지 복원을 사용하도록 설정하기 위해 프로젝트를 변경하지 않습니다.
- props/targets 파일에 대한 MSBuild 가져오기를 포함하는 패키지를 포함한 모든 NuGet 패키지는 MSBuild가 호출되기 전에 복원되어 빌드 중에 해당 props/targets가 제대로 인식되도록 합니다.
Visual Studio에서 자동 패키지 복원을 사용하려면 다음 중 하나만 수행해야 합니다.
- 폴더에 검사 안 함
packages
소스 제어에서 폴더를 생략하는 방법에는 여러 가지가 있습니다 packages
. 자세한 내용은 패키지 및 소스 제어 항목을 참조하세요.
모든 사용자는 자동 패키지 복원 동의를 암시적으로 옵트아웃하지만 Visual Studio의 패키지 관리자 설정을 통해 쉽게 옵트아웃할 수 있습니다.
NuGet 2.7에는 nuget.exe 대한 새로운 기능이 도입되었습니다. nuget.exe restore
이 새 복원 명령을 사용하면 솔루션 파일 또는 폴더를 인수로 수락하여 단일 명령으로 솔루션에 대한 모든 패키지를 쉽게 복원할 수 있습니다. 또한 이 인수는 현재 폴더에 단일 솔루션만 있는 경우에 암시됩니다. 즉, 단일 솔루션 파일(MySolution.sln)이 포함된 폴더에서 다음 작업이 모두 수행됩니다.
- 복원 MySolution.sln nuget.exe
- 복원을 nuget.exe.
- nuget.exe 복원
복원 명령은 솔루션 파일을 열고 솔루션 내의 모든 프로젝트를 찾습니다. 여기에서 각 프로젝트에 대한 파일을 찾고 찾 packages.config
은 모든 패키지를 복원합니다. 또한 파일에 있는 .nuget\packages.config
솔루션 수준 패키지를 복원합니다. 새 복원 명령에 대한 자세한 내용은 명령줄 참조에서 찾을 수 있습니다.
패키지 복원에 대한 이러한 변경 내용이 새 워크플로를 도입하게 되어 매우 기쁩니다. 소스 제어에서 패키지를 생략하려는 경우 폴더를 packages
커밋하지 않습니다. 솔루션을 열고 빌드하는 Visual Studio 사용자는 패키지가 자동으로 복원되는 것을 볼 수 있습니다. 명령줄 빌드의 경우 호출하기 전에 호출 nuget.exe restore
하기 msbuild
만 하면 됩니다. 솔루션에서 "NuGet 패키지 복원 사용" 제스처를 더 이상 사용할 필요가 없으며 빌드를 변경하기 위해 프로젝트를 수정할 필요가 없습니다. 또한 이는 특히 \build 폴더에서 props/targets 파일을 자동으로 가져오기 위한 NuGet의 최근 기능을 통해 추가된 가져오기의 경우 MSBuild 가져오기를 포함하는 패키지에 대해 훨씬 향상된 환경을 제공합니다.
우리가 직접 수행한 작업 외에도, 우리는 이 새로운 접근 방식을 해결하기 위해 몇 가지 중요한 파트너와 협력하고 있습니다. 아직 구체적인 타임라인 없지만, 각 파트너는 새로운 접근 방식에 대해 매우 기쁘게 생각하고 있습니다.
- Team Foundation Service - 호출을 기본 빌드 시나리오에 통합하기 위해
nuget.exe restore
노력하고 있습니다. - Windows Azure 웹 사이트 - 프로젝트를 Azure에 푸시하고 웹 사이트를 빌드하기 전에 호출할 수 있도록 작업합니다
nuget.exe restore
. - TeamCity - TeamCity 8.x에 대한 NuGet 설치 관리자 플러그 인을 업데이트하고 있습니다.
- AppHarbor - 솔루션이 빌드되기 전에 AppHarbor에 리포지토리를 푸시하고 호출할
nuget.exe restore
수 있도록 하기 위해 노력하고 있습니다.
위의 각 파트너는 고유한 nuget.exe 복사본을 사용하므로 솔루션에서 nuget.exe 수행할 필요가 없습니다.
초기 2.7 릴리스에서 nuget.exe 복원에 대해 알려진 두 가지 문제가 있었지만 NuGet.CommandLine 패키지 업데이트로 2013년 9월 6일에 수정되었습니다. 이 업데이트는 CodePlex에서도 [NuGet 2.7 download page](https://nuget.codeplex.com/releases/view/107605)
사용할 수 있습니다. 실행 nuget.exe update -self
하면 최신 릴리스로 업데이트됩니다.
수정된 내용은 다음과 같습니다.
[New package restore doesn't work on Mono when using SLN file](https://nuget.codeplex.com/workitem/3596)
[New package restore doesn't work with Wix projects](https://nuget.codeplex.com/workitem/3598)
새 패키지 복원 워크플로에 알려진 문제도 있습니다 [Automatic Package Restore does not work for projects under a solution folder](https://nuget.codeplex.com/workitem/3625)
. 이 문제는 NuGet 2.7.1에서 해결되었습니다.
프로젝트 대상을 다시 지정하거나 업그레이드한 후에는 일부 NuGet 패키지가 제대로 작동하지 않는 것을 확인할 수 있습니다. 아쉽게도 이에 대한 징후는 없으며 이를 해결하는 방법에 대한 지침은 없습니다. NuGet 2.7에서는 이제 설치된 NuGet 패키지에 영향을 주는 방식으로 프로젝트를 대상을 변경하거나 업그레이드한 시기를 인식하기 위해 일부 Visual Studio 이벤트를 사용합니다.
패키지가 대상 다시 지정 또는 업그레이드의 영향을 받은 것으로 감지되면 즉시 빌드 오류를 생성하여 알려 드리겠습니다. 즉각적인 빌드 오류 외에도 대상 다시 지정의 영향을 받은 모든 패키지에 대한 플래그 packages.config
를 파일에 유지 requireReinstallation="true"
하며 Visual Studio의 각 후속 빌드는 해당 패키지에 대한 빌드 경고를 발생합니다.
NuGet은 영향을 받는 패키지를 다시 설치하기 위한 자동 작업을 수행할 수 없지만, 이 표시 및 경고가 패키지를 다시 설치해야 할 때 검색하는 데 도움이 되기를 바랍니다. 또한 이러한 오류 메시지가 사용자에게 보내는 패키지 다시 설치 지침 설명서도 작업 중입니다.
많은 회사에서 내부적으로 NuGet을 사용하고 있지만 개발자가 nuget.org 대신 내부 패키지 원본을 사용하도록 안내하는 데 어려움을 겪었습니다. NuGet 2.7에는 다음과 같이 컴퓨터 전체 기본값을 지정할 수 있는 구성 기본값 기능이 도입되었습니다.
- 사용 가능한 패키지 원본
- 등록되었지만 사용할 수 없는 패키지 원본
- 기본 nuget.exe 푸시 소스
이제 이러한 각 구성은 에 있는 %ProgramData%\NuGet\NuGetDefaults.Config
파일 내에서 구성할 수 있습니다. 이 구성 파일이 패키지 원본을 지정하는 경우 기본 nuget.org 패키지 원본은 자동으로 등록되지 않으며 NuGetDefaults.Config
대신 해당 패키지 원본이 등록됩니다.
이 기능을 사용할 필요는 없지만 회사에서 그룹 정책을 사용하여 파일을 배포 NuGetDefaults.Config
해야 합니다.
이 기능은 개발자의 NuGet 설정에서 패키지 원본을 제거하지 않습니다. 즉 개발자가 이미 NuGet을 사용하고 있고 이에 따라 등록된 nuget.org 패키지 원본이 있는 경우 NuGetDefaults.Config
파일을 만든 후에도 패키지 원본이 제거되지 않습니다.
이 기능에 대한 자세한 내용은 NuGet 구성 기본값을 참조하세요.
NuGet은 항상 nuget.org 가리키는 "NuGet 공식 패키지 원본"이라는 기본 패키지 원본을 등록했습니다. 그 이름은 자세한 정보였고 실제로 가리키는 위치를 지정하지도 않았습니다. 이러한 두 가지 문제를 해결하기 위해 이 패키지 원본의 이름을 UI의 "nuget.org"로 변경했습니다. 패키지 원본의 URL도 "www." 접두사를 포함하도록 변경되었습니다. NuGet 2.7을 사용한 후에는 기존 "NuGet 공식 패키지 원본"이 해당 이름으로 "nuget.org"로, URL로 "https://www.nuget.org/api/v2/"로 자동으로 업데이트됩니다.
2.7에서 성능이 약간 향상되어 메모리 공간이 줄어들고 디스크 사용량이 줄어들고 패키지 설치가 빨라집니다. 또한 전체 페이로드를 줄일 수 있는 OData 기반 피드에 대한 더 스마트한 쿼리를 만들었습니다.
이전 릴리스에서 누락된 기능의 격차를 메우기 위해 확장성 서비스에 몇 가지 새로운 API를 추가했습니다.
// Checks if a NuGet package with the specified Id and version is installed in the specified project.
bool IsPackageInstalledEx(Project project, string id, string versionString);
// Get the list of NuGet packages installed in the specified project.
IEnumerable<IVsPackageMetadata> GetInstalledPackages(Project project);
// Installs one or more packages that exist on disk in a folder defined in the registry.
void InstallPackagesFromRegistryRepository(string keyName, bool isPreUnzipped, bool skipAssemblyReferences, Project project, IDictionary<string, string> packageVersions);
// Installs one or more packages that are embedded in a Visual Studio Extension Package.
void InstallPackagesFromVSExtensionRepository(string extensionId, bool isPreUnzipped, bool skipAssemblyReferences, Project project, IDictionary<string, string> packageVersions);
이 기능은 Adam Ralph에 의해 제공되었으며 패키지 작성자가 개발 시에만 사용되었으며 패키지 종속성이 필요하지 않은 종속성을 선언할 수 있습니다. 패키지에 developmentDependency="true"
특성을 추가하면 해당 패키지 packages.config
nuget.exe pack
가 더 이상 종속성으로 포함되지 않습니다.
2.7의 새 패키지 복원 모델은 기본 NuGet VSPackage와 다른 새 VSPackage에 의해 구현됩니다. 기술적인 문제로 인해 이 새로운 VSPackage는 지원되는 다른 Visual Studio SKU와 동일한 코드 베이스를 공유하기 때문에 Windows 전화 SKU용 Visual Studio 2010 Express에서 제대로 작동하지 않습니다. 따라서 NuGet 2.7부터 게시된 확장에서 Windows용 Visual Studio 2010 Express 전화 대한 지원이 중단됩니다. Visual Studio 2010 Express for Web에 대한 지원은 여전히 Visual Studio 확장 갤러리에 게시된 기본 확장에 포함되어 있습니다.
Visual Studio 버전/버전에서 여전히 NuGet을 사용하는 개발자가 몇 명이나 될지 잘 모르기 때문에 해당 사용자를 위해 별도의 Visual Studio 확장을 게시하고 CodePlex(Visual Studio 확장 갤러리가 아닌)에 게시합니다. 해당 확장을 계속 기본 계획은 없지만, 이 문제가 영향을 받는 경우 CodePlex에 문제를 제출하여 알려주세요.
NuGet 패키지 관리자(Visual Studio 2010 Express for Windows 전화)를 다운로드하려면 페이지를 방문 [NuGet 2.7 Downloads](https://nuget.codeplex.com/releases/view/107605)
하세요.
이러한 기능 외에도 이 NuGet 릴리스에는 다른 많은 버그 수정 사항도 포함되어 있습니다. 릴리스에서 해결된 총 문제는 97개였습니다. NuGet 2.7에서 수정된 작업 항목의 전체 목록은 다음을 [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.7&status=all)
참조하세요.