다음을 통해 공유


NuGet 2.5 릴리스 정보

NuGet 2.2.1 릴리스 정보 | NuGet 2.6 릴리스 정보

NuGet 2.5는 2013년 4월 25일에 릴리스되었습니다. 이 릴리스는 너무 커서 버전 2.3 및 2.4를 건너뛰도록 강요당했습니다! 지금까지 이 릴리스는 NuGet용으로 출시된 가장 큰 릴리스입니다 [160 work items](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.5&status=all) .

감사의 말

NuGet 2.5에 대한 중요한 기여 다음과 같은 외부 기여자 감사드립니다.

  1. [Daniel Plaisted](https://www.codeplex.com/site/users/view/dsplaisted) (@dsplaisted)
    • [#2847](https://nuget.codeplex.com/workitem/2847) - 알려진 대상 프레임워크 식별자 목록에 MonoAndroid, MonoTouch 및 MonoMac을 추가합니다.
  2. [Andres G. Aragoneses](https://www.codeplex.com/site/users/view/knocte) (@knocte)
    • [#2865](https://nuget.codeplex.com/workitem/2865) - 대/소문자를 구분하는 OS의 NuGet.targets 맞춤법 수정
  3. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • Mono에서 솔루션을 빌드합니다.
  4. [Andrew Theken](https://www.codeplex.com/site/users/view/atheken) (@atheken)
    • Mono에서 실패한 단위 테스트를 수정합니다.
  5. [Olivier Dagenais](https://www.codeplex.com/site/users/view/OliIsCool) (@OliIsCool)
    • [#2920](https://nuget.codeplex.com/workitem/2920) - nuget.exe pack 명령은 MSBuild에 속성을 전파하지 않습니다.
  6. [Miroslav Bajtos](https://www.codeplex.com/site/users/view/MiroslavBajtos) (@bajtos)
    • [#1511](https://nuget.codeplex.com/workitem/1511) - 서식을 유지하기 위해 수정된 XML 처리 코드입니다.
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • build.cmd 성공할 수 있도록 인식된 단어를 사용자 지정 사전에 추가했습니다.
  8. [Bruno Roggeri](https://www.codeplex.com/site/users/view/broggeri)
    • 지역화된 VS에서 실행할 때 단위 테스트를 수정합니다.
  9. [Gareth Evans](https://www.codeplex.com/site/users/view/garethevans)
    • PackageService에서 추출된 인터페이스
  10. [Maxime Brugidou](https://www.codeplex.com/site/users/view/brugidou) (@brugidou)
    • [#936](https://nuget.codeplex.com/workitem/936) - 압축 시 프로젝트 종속성 처리
  11. [Xavier Decoster](https://www.codeplex.com/site/users/view/XavierDecoster) (@XavierDecoster)
    • [#2991](https://nuget.codeplex.com/workitem/2991), [#3164](https://nuget.codeplex.com/workitem/3164) - nuget.cofig 파일에 패키지 원본 자격 증명을 저장할 때 텍스트 암호 지우기 지원
  12. [James Manning](http://www.codeplex.com/site/users/view/jmanning) (@manningj)
    • [#3190](http://nuget.codeplex.com/workitem/3190), [#3191](https://nuget.codeplex.com/workitem/3191) - Get-Package 도움말 설명 수정

또한 최종 릴리스 전에 승인되고 수정된 NuGet 2.5 베타/RC를 사용하여 버그를 찾는 다음 개인에게 감사드립니다.

  1. [Tony Wall](https://www.codeplex.com/site/users/view/CodeChief) (@CodeChief)
    • [#3200](https://nuget.codeplex.com/workitem/3200) - 가장 최근 NuGet 2.4 및 2.5 빌드로 중단된 MSTest

릴리스의 주목할 만한 기능

사용자가 이미 존재하는 콘텐츠 파일을 덮어쓸 수 있도록 허용

항상 가장 많이 요청된 기능 중 하나는 NuGet 패키지에 포함될 때 디스크에 이미 있는 콘텐츠 파일을 덮어쓰는 기능이었습니다. NuGet 2.5부터 이러한 충돌이 식별되고 파일을 덮어쓰라는 메시지가 표시되지만 이전에는 이러한 파일을 항상 건너뛰었다.

Overwrite content files

'nuget.exe 업데이트'와 'Install-Package'에는 이제 명령줄 시나리오에 대한 몇 가지 기본값을 설정하는 새로운 옵션 '-FileConflictAction'이 있습니다.

패키지의 파일이 대상 프로젝트에 이미 있는 경우 기본 작업을 설정합니다. 항상 파일을 덮어쓰려면 '덮어쓰기'로 설정합니다. 파일을 건너뛰려면 '무시'로 설정합니다. 지정하지 않으면 충돌하는 각 파일에 대한 메시지가 표시됩니다.

MSBuild 대상 및 props 파일 자동 가져오기

NuGet 패키지의 최상위 수준에서 새 기존 폴더가 만들어졌습니다. 이제 패키지에 폴더를 포함 \build\tools\lib\content수 있습니다. 이 폴더 아래에는 이름이 고정된 {packageid}.targets 두 개의 파일을 배치하거나 {packageid}.props. 이러한 두 파일은 다른 폴더와 마찬가지로 프레임워크별 폴더 바로 아래 build 또는 아래에 있을 수 있습니다. 가장 일치하는 프레임워크 폴더를 선택하는 규칙은 해당 폴더와 정확히 동일합니다.

NuGet에서 \build 파일이 포함된 패키지를 설치하면 프로젝트 파일에서 파일 및 .props 파일을 가리키는 .targets MSBuild <Import> 요소가 추가됩니다. .props 파일이 맨 위에 추가되는 반면.targets, 파일은 맨 아래에 추가됩니다.

요소를 사용하여 <References/> 플랫폼당 다른 참조 지정

2.5 이전의 파일에서 사용자는 모든 프레임워크에 .nuspec 대해 추가할 참조 파일만 지정할 수 있습니다. 이제 2.5에서 이 새로운 기능을 사용하여 사용자는 지원되는 각 플랫폼에 대한 요소를 작성 <reference/> 할 수 있습니다. 예를 들면 다음과 같습니다.

<references>
    <group targetFramework="net45">
        <reference file="a.dll" />
    </group>
    <group targetFramework="netcore45">
        <reference file="b.dll" />
    </group>
    <group>
        <reference file="c.dll" />
    </group>
</references>

NuGet이 파일을 기반으로 .nuspec 프로젝트에 참조를 추가하는 방법에 대한 흐름은 다음과 같습니다.

  1. 대상 프레임워크에 lib 적합한 폴더를 찾고 해당 폴더에서 어셈블리 목록을 가져옵니다.
  2. 대상 프레임워크에 적합한 참조 그룹을 별도로 찾고 해당 그룹에서 어셈블리 목록을 가져옵니다. 대상 프레임워크가 지정되지 않은 참조 그룹은 대체 그룹입니다.
  3. 두 목록의 교집합을 찾아 추가할 참조로 사용합니다.

이 새로운 기능을 사용하면 패키지 작성자가 여러 폴더에서 중복 어셈블리를 수행해야 하는 경우 참조 기능을 사용하여 어셈블리의 하위 집합을 다른 프레임워크에 lib 적용할 수 있습니다.

참고: 현재 이 기능을 사용하려면 nuget.exe 팩을 사용해야 합니다. NuGet 패키지 탐색기는 아직 지원하지 않습니다.

모든 패키지를 한 번에 업데이트할 수 있도록 모두 업데이트 단추

많은 사용자가 모든 패키지를 업데이트하는 "Update-Package" PowerShell cmdlet에 대해 알고 있습니다. 이제 UI를 통해서도 이 작업을 쉽게 수행할 수 있습니다.

이 기능을 사용해 보려면 다음을 수행합니다.

  1. 새 ASP.NET MVC 애플리케이션 만들기
  2. 'NuGet 패키지 관리' 대화 상자 시작
  3. '업데이트'을 선택합니다.
  4. '모두 업데이트' 단추를 클릭합니다.

Update All button in the dialog

nuget.exe Pack에 대한 향상된 프로젝트 참조 지원

이제 nuget.exe pack 명령은 다음 규칙을 사용하여 참조된 프로젝트를 처리합니다.

  1. 참조된 프로젝트에 해당 .nuspec 파일이 있는 경우(예: 동일한 폴더proj1.csproj에 호출 proj1.nuspec 된 파일이 있는 경우) 이 프로젝트는 파일에서 .nuspec 읽은 ID 및 버전을 사용하여 패키지에 대한 종속성으로 추가됩니다.
  2. 그렇지 않으면 참조된 프로젝트의 파일이 패키지에 번들로 제공됩니다. 그런 다음 이 프로젝트에서 참조하는 프로젝트는 동일한 규칙을 사용하여 재귀적으로 처리됩니다.
  3. 모든 DLL .pdb.exe 파일이 추가됩니다.
  4. 다른 모든 콘텐츠 파일이 추가됩니다.
  5. 모든 종속성이 병합됩니다.

이렇게 하면 파일이 있는 경우 참조된 프로젝트를 종속성으로 처리할 수 있습니다 .nuspec . 그렇지 않으면 패키지의 일부가 됩니다.

자세한 내용은 다음을 참조하세요. [http://nuget.codeplex.com/workitem/936](http://nuget.codeplex.com/workitem/936)

패키지에 '최소 NuGet 버전' 속성 추가

이제 'minClientVersion'이라는 새 메타데이터 특성이 패키지를 사용하는 데 필요한 최소 NuGet 클라이언트 버전을 나타낼 수 있습니다.

이 기능은 패키지 작성자가 특정 버전의 NuGet 이후에만 패키지가 작동하도록 지정하는 데 도움이 됩니다. NuGet 2.5 이후 새 .nuspec 기능이 추가되면 패키지는 최소 NuGet 버전을 클레임할 수 있습니다.

<metadata minClientVersion="2.6">

사용자에게 NuGet 2.5가 설치되어 있고 패키지가 2.6이 필요한 것으로 식별되면 패키지를 설치할 수 없음을 나타내는 시각적 신호가 사용자에게 제공됩니다. 그러면 사용자가 NuGet의 버전을 업데이트하도록 안내됩니다.

이렇게 하면 패키지가 설치되기 시작하지만 인식할 수 없는 스키마 버전이 식별되었음을 나타내는 데 실패하는 기존 환경이 개선됩니다.

패키지를 설치하는 동안 종속성이 더 이상 불필요하게 업데이트되지 않습니다.

NuGet 2.5 이전에는 기존 버전이 종속성을 충족하더라도 프로젝트에 이미 설치된 패키지에 종속된 패키지를 설치할 때 종속성이 새 설치의 일부로 업데이트됩니다.

NuGet 2.5부터 종속성 버전이 이미 충족되면 다른 패키지 설치 중에 종속성이 업데이트되지 않습니다.

시나리오:

  1. 원본 리포지토리에는 버전 1.0.0 및 1.0.2가 포함된 패키지 B가 포함되어 있습니다. 또한 B(>= 1.0.0)에 대한 종속성이 있는 패키지 A를 포함합니다.
  2. 현재 프로젝트에 이미 패키지 B 버전 1.0.0이 설치되어 있다고 가정합니다. 이제 패키지 A를 설치하려고 합니다.

NuGet 2.2 이상:

  • 패키지 A를 설치할 때 NuGet은 기존 버전 1.0.0이 이미 종속성 버전 제약 조건( >= 1.0.0)을 충족하더라도 B를 1.0.2로 자동 업데이트합니다.

NuGet 2.5 이상에서:

  • NuGet은 기존 버전 1.0.0이 종속성 버전 제약 조건을 충족한다는 것을 감지하므로 B를 더 이상 업데이트하지 않습니다.

이 변경에 대한 자세한 배경 정보는 자세한 내용 [work item](https://nuget.codeplex.com/workitem/1681) 과 관련 [discussion thread](https://nuget.codeplex.com/discussions/436712)내용을 참조하세요.

nuget.exe 자세한 세부 정보 표시를 사용하여 http 요청을 출력합니다.

nuget.exe 문제를 해결하거나 작업 중에 어떤 HTTP 요청이 수행되는지 궁금한 경우 이제 '자세한 정보 표시' 스위치가 수행된 모든 HTTP 요청을 출력합니다.

HTTP output from nuget.exe

nuget.exe 푸시는 이제 UNC 및 폴더 원본을 지원합니다.

NuGet 2.5 이전에는 UNC 경로 또는 로컬 폴더를 기반으로 패키지 원본에 'nuget.exe 푸시'를 실행하려고 하면 푸시가 실패합니다. 최근에 추가된 계층적 구성 기능을 사용하면 nuget.exe UNC/폴더 원본 또는 HTTP 기반 NuGet 갤러리를 대상으로 지정해야 하는 것이 일반적입니다.

NuGet 2.5부터 nuget.exe UNC/폴더 원본을 식별하는 경우 원본에 대한 파일 복사를 수행합니다.

이제 다음 명령이 작동합니다.

nuget push -source \\mycompany\repo\ mypackage.1.0.0.nupkg

nuget.exe 명시적으로 지정된 구성 파일을 지원합니다.

구성에 액세스하는 nuget.exe 명령('spec' 및 'pack'을 제외한 모든 명령)은 이제 %AppData%\nuget\Nuget.Config의 기본 구성 파일 대신 특정 구성 파일을 사용하도록 하는 새 '-ConfigFile' 옵션을 지원합니다.

예시:

nuget sources add -name test -source http://test -ConfigFile C:\test\.nuget\Nuget.Config

네이티브 프로젝트 지원

NuGet 2.5를 사용하면 이제 Visual Studio의 네이티브 프로젝트에 NuGet 도구를 사용할 수 있습니다. 대부분의 네이티브 패키지는 CoApp 프로젝트에서 만든 도구를 사용하여 위의 MSBuild 가져오기 기능을 활용할 것으로 예상합니다. 자세한 내용은 coapp.org 웹 사이트의 도구에 대한 세부 정보를 참조하세요.

패키지가 네이티브 프로젝트에 설치될 때 \build, \content 및 \tools에 파일을 포함하도록 패키지에 대해 "네이티브"의 대상 프레임워크 이름이 도입되었습니다. 'lib' 폴더는 네이티브 프로젝트에 사용되지 않습니다.