NuGet 2.8 릴리스 정보

NuGet 2.7.2 릴리스 정보 | NuGet 2.8.1 릴리스 정보

NuGet 2.8은 2014년 1월 29일에 릴리스되었습니다.

감사의 말

  1. [Llewellyn Pritchard](https://www.codeplex.com/site/users/view/leppie) (@leppie)
    • [#3466](https://nuget.codeplex.com/workitem/3466) - 패키지를 압축할 때 종속성 패키지의 ID를 확인합니다.
  2. [Maarten Balliauw](https://www.codeplex.com/site/users/view/maartenba) (@maartenballiauw)
    • [#2379](https://nuget.codeplex.com/workitem/2379) - 피드 자격 증명을 유지할 때 $metadata 접미사를 제거합니다.
  3. [Filip De Vos](https://www.codeplex.com/site/users/view/FilipDeVos) (@foxtricks)
    • [#3538](http://nuget.codeplex.com/workitem/3538) - nuget.exe 업데이트 명령에 대한 프로젝트 파일 지정을 지원합니다.
  4. [Juan Gonzalez](https://www.codeplex.com/site/users/view/jjgonzalez)
    • [#3536](http://nuget.codeplex.com/workitem/3536) - 대체 토큰이 -IncludeReferencedProjects와 함께 전달되지 않습니다.
  5. [David Poole](https://www.codeplex.com/site/users/view/Sarkie) (@Sarkie_Dave)
    • [#3677](http://nuget.codeplex.com/workitem/3677) - 큰 패키지를 푸시할 때 OutOfMemoryException을 throw하는 nuget.push를 수정합니다.
  6. [Wouter Ouwens](https://www.codeplex.com/site/users/view/Despotes)
    • [#3666](http://nuget.codeplex.com/workitem/3666) - 프로젝트가 다른 CLI/C++ 프로젝트를 참조할 때 잘못된 대상 경로를 수정합니다.
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • [#3639](https://nuget.codeplex.com/workitem/3639) - 기본적으로 패키지를 개발 종속성으로 설치하도록 허용
  8. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • [#3717](https://nuget.codeplex.com/workitem/3717) - 최신 패치 버전으로 암시적 업그레이드 제거
  9. [Gregory Vandenbrouck](https://www.codeplex.com/site/users/view/vdbg)
    • NuGet.Server, nuget.exe 미러 명령 등에 대한 몇 가지 버그 수정 및 개선 사항
    • 이 작업은 몇 달 동안 수행되었으며, 그레고리는 2.8에 대한 마스터에 통합 할 수있는 적절한 타이밍에 우리와 함께 일했습니다.

종속성에 대한 패치 확인

패키지 종속성을 확인할 때 NuGet은 지금까지 패키지에 대한 종속성을 충족하는 가장 낮은 주 및 부 패키지 버전을 선택하는 전략을 구현했습니다. 그러나 주 버전 및 부 버전과 달리 패치 버전은 항상 가장 높은 버전으로 확인되었습니다. 이 동작은 의도적인 것이었지만 종속성이 있는 패키지를 설치하기 위한 결정론이 부족했습니다. 다음 예제를 참조하세요.

PackageA@1.0.0 -[ >=1.0.0 ]-> PackageB@1.0.0

Developer1 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.0

PackageB@1.0.1 is published

Developer2 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.1

이 예제에서는 Developer1 및 Developer2가 PackageA@1.0.0을 설치했음에도 불구하고 각각 다른 버전의 PackageB로 끝났습니다. NuGet 2.8은 패치 버전에 대한 종속성 확인 동작이 주 버전 및 부 버전의 동작과 일치하게 이 기본 동작을 변경합니다. 위의 예제에서는 최신 패치 버전에 관계없이 PackageA@1.0.0을 설치한 결과로 PackageB@1.0.0이 설치됩니다.

-DependencyVersion 스위치

NuGet 2.8은 종속성 해결을 위한 기본 동작을 변경하지만 패키지 관리자 콘솔의 -DependencyVersion 스위치를 통해 종속성 확인 프로세스에 대한 보다 정확한 제어를 추가합니다. 스위치를 사용하면 가능한 가장 낮은 버전(기본 동작), 가능한 가장 높은 버전 또는 가장 높은 부 버전 또는 패치 버전으로 종속성을 확인할 수 있습니다. 이 스위치는 powershell 명령의 install-package에 대해서만 작동합니다.

DependencyVersion Switch

DependencyVersion 특성

위에서 자세히 설명한 -DependencyVersion 스위치 외에도 NuGet은 -DependencyVersion 스위치가 install-package 호출에서 지정되지 않은 경우 기본값이 무엇인지 정의하는 Nuget.Config 파일에서 새 특성을 설정할 수 있습니다. 이 값은 설치 패키지 작업에 대한 NuGet 패키지 관리자 대화 상자에서도 적용됩니다. 이 값을 설정하려면 아래의 특성을 Nuget.Config 파일에 추가합니다.

<config>
    <add key="dependencyversion" value="Highest" />
</config>

-whatif를 사용하여 NuGet 작업 미리 보기

일부 NuGet 패키지에는 심층 종속성 그래프 있을 수 있으므로 설치, 제거 또는 업데이트 작업 중에 먼저 어떤 일이 일어날지 확인하는 데 도움이 될 수 있습니다. NuGet 2.8은 표준 PowerShell -whatif 스위치를 install-package, uninstall-package 및 update-package 명령에 추가하여 명령이 적용될 패키지의 전체 닫기를 시각화할 수 있도록 합니다. 예를 들어 빈 ASP.NET 웹 애플리케이션에서 실행 install-package Microsoft.AspNet.WebApi -whatif 하면 다음과 같은 결과가 발생합니다.

PM> install-package Microsoft.AspNet.WebApi -whatif
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.WebHost (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Core (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Client (≥ 5.0.0)'.
Attempting to resolve dependency 'Newtonsoft.Json (≥ 4.5.11)'.
Install Newtonsoft.Json 4.5.11
Install Microsoft.AspNet.WebApi.Client 5.0.0
Install Microsoft.AspNet.WebApi.Core 5.0.0
Install Microsoft.AspNet.WebApi.WebHost 5.0.0
Install Microsoft.AspNet.WebApi 5.0.0

패키지 다운그레이드

새 기능을 조사한 다음 안정적인 마지막 버전으로 롤백하기로 결정하기 위해 패키지의 시험판 버전을 설치하는 것은 드문 일이 아닙니다. NuGet 2.8 이전에는 시험판 패키지 및 해당 종속성을 제거한 다음 이전 버전을 설치하는 다단계 프로세스였습니다. 그러나 NuGet 2.8에서는 이제 업데이트 패키지가 전체 패키지 닫기(예: 패키지의 종속성 트리)를 이전 버전으로 롤백합니다.

개발 종속성

개발 프로세스를 최적화하는 데 사용되는 도구를 포함하여 다양한 유형의 기능을 NuGet 패키지로 제공할 수 있습니다. 이러한 구성 요소는 새 패키지를 개발하는 데 중요한 역할을 할 수 있지만 나중에 게시될 때 새 패키지의 종속성으로 간주해서는 안 됩니다. NuGet 2.8을 사용하면 패키지가 파일에서 .nuspec 자신을 developmentDependency로 식별할 수 있습니다. 설치되면 이 메타데이터도 패키지가 packages.config 설치된 프로젝트의 파일에 추가됩니다. 이 packages.config 파일은 나중에 NuGet 종속성에 nuget.exe pack대해 분석될 때 개발 종속성으로 표시된 종속성을 제외합니다.

다른 플랫폼에 대한 개별 packages.config 파일

여러 대상 플랫폼에 대한 애플리케이션을 개발할 때 각 빌드 환경에 대해 서로 다른 프로젝트 파일이 있는 것이 일반적입니다. 패키지에는 다양한 플랫폼에 대한 다양한 수준의 지원이 있으므로 다른 프로젝트 파일에서 서로 다른 NuGet 패키지를 사용하는 것이 일반적입니다. NuGet 2.8은 다양한 플랫폼별 프로젝트 파일에 대해 서로 다른 packages.config 파일을 만들어 이 시나리오에 대한 향상된 지원을 제공합니다.

Multiple package.config files

로컬 캐시로 대체

NuGet 패키지는 일반적으로 네트워크 연결을 사용하여 NuGet 갤러리와 같은 원격 갤러리 에서 사용되지만 클라이언트가 연결되지 않은 많은 시나리오가 있습니다. 네트워크 연결이 없으면 해당 패키지가 로컬 NuGet 캐시의 클라이언트 컴퓨터에 이미 있는 경우에도 NuGet 클라이언트에서 패키지를 성공적으로 설치할 수 없었습니다. NuGet 2.8은 패키지 관리자 콘솔에 자동 캐시 대체를 추가합니다. 예를 들어 네트워크 어댑터의 연결을 끊고 jQuery를 설치하면 콘솔에 다음이 표시됩니다.

PM> Install-Package jquery
The source at nuget.org [https://www.nuget.org/api/v2/] is unreachable. Falling back to NuGet Local Cache at C:\Users\me\AppData\Local\NuGet\Cache
Installing 'jQuery 2.0.3'.
Successfully installed 'jQuery 2.0.3'.
Adding 'jQuery 2.0.3' to WebApplication18.
Successfully added 'jQuery 2.0.3' to WebApplication18.

캐시 대체 기능에는 특정 명령 인수가 필요하지 않습니다. 또한 캐시 대체는 현재 패키지 관리자 콘솔에서만 작동합니다. 이 동작은 현재 패키지 관리자 대화 상자에서 작동하지 않습니다.

WebMatrix NuGet 클라이언트 업데이트

NuGet 2.8과 함께 WebMatrix용 NuGet 확장도 NuGet 2.5와 함께 제공되는 많은 주요 기능을 포함하도록 업데이트되었습니다. 새로운 기능에는 '모두 업데이트', '최소 NuGet 버전', 콘텐츠 파일 덮어쓰기 허용 등의 기능이 포함됩니다.

WebMatrix 3에서 NuGet 패키지 관리자 확장을 업데이트하려면 다음을 수행합니다.

  1. WebMatrix 3 열기
  2. 리본에서 확장 아이콘 클릭
  3. 업데이트 탭 선택
  4. NuGet 패키지 관리자 2.5.0으로 업데이트하려면 클릭합니다.
  5. WebMatrix 3 닫기 및 다시 시작

WebMatrix용 NuGet 패키지 관리자 확장의 NuGet 팀의 첫 번째 릴리스입니다. 이 코드는 최근 Microsoft에서 오픈 소스 NuGet 프로젝트에 기여했습니다. 이전에는 NuGet 통합이 WebMatrix에 기본 제공되었으며 WebMatrix에서 대역 외로 업데이트할 수 없었습니다. 이제 NuGet의 나머지 클라이언트 도구와 함께 추가로 업데이트할 수 있는 기능이 있습니다.

버그 수정

주요 버그 수정 중 하나는 update-package -reinstall 명령의 성능 향상이었습니다.

이러한 기능과 선호도멘션 성능 수정 외에도 이 NuGet 릴리스에는 다른 많은 버그 수정 사항도 포함되어 있습니다. 릴리스에서 해결된 총 문제는 181개였습니다. NuGet 2.8에서 수정된 작업 항목의 전체 목록은 다음을 [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.8&status=all)참조하세요.