다음을 통해 공유


NuGet 6.0 릴리스 정보

NuGet 배포 차량:

NuGet 버전 Visual Studio 버전에서 사용 가능 .NET SDK에서 사용 가능
6.0.0 Visual Studio 2022 버전 17.0.0 6.0.01
6.0.1 Visual Studio 2022 버전 17.0.2 해당 없음
6.0.2 Visual Studio 2022 버전 17.0.11 6.0.3011
6.0.3 Visual Studio 2022 버전 17.0 6.0.1101
6.0.5 해당 없음 6.0.1181
6.0.6 해당 없음 6.0.1271

1 Visual Studio 2022 with.NET Core 워크로드와 함께 설치됨

요약: 6.0.6의 새로운 기능

  • [보안]: Microsoft 보안 권고 CVE-2024-0057 | NuGet 클라이언트 보안 기능 바이패스 취약성 - #12653

요약: 6.0.5의 새로운 기능

  • [보안]: Microsoft 보안 권고 CVE-2023-29337 | NuGet 클라이언트 원격 코드 실행 취약성 - #12653

참고 항목

Linux에서 호환성이 손상되는 동작 변경이 있습니다. NuGet이 다양한 작업 중에 임시 파일을 저장하는 임시 폴더 위치가 변경 /tmp/NuGetScratch/tmp/NuGetScratch<username>되었습니다. 예를 들어 사용자 User1의 경우 임시 폴더가 됩니다 /tmp/NuGetScratchUser1.

요약: 6.0.3의 새로운 기능

  • [보안]: Microsoft 보안 권고 CVE-2022-41032 | .NET 권한 상승 취약성 - #12149

참고 항목

Visual Studio 17.0, MSBuild 17.0 및 .NET 6.0에는 NuGet.exe 6.0 이상이 필요합니다.

요약: 6.0.2의 새로운 기능

  • [보안]: Microsoft 보안 권고 CVE 2022-30184 | .NET 정보 공개 취약성 - #11883

요약: 6.0.0의 새로운 기능

🎉 .NET 6.0 🎉을 대상으로 하는 NuGet 패키지에 대한 전체 작성 및 복원 지원을 제공하는 첫 번째 릴리스입니다.

.NET 6 지원

NuGet 6.0은 .NET 6.0을 대상으로 하는 NuGet 패키지에 대한 전체 작성 및 복원 지원을 제공하는 첫 번째 릴리스입니다. 이제 다음 대상 프레임워크를 대상으로 지정할 수 있습니다.

  • net6.0
  • net6.0-windows
  • net6.0-android
  • net6.0-ios
  • net6.0-macos
  • net6.0-maccatalyst
  • net6.0-tvos
  • net6.0-tizen

.NET 6

현재 .NET 6.0 대상 또는 향후에 어떤 모습일지 잘 모르는 경우 .NET 6.0 TFM 사양을 검사 것을 잊지 마세요.

원본 매핑

올해 초, 많은 패키지 관리자는 사용자가 의도한 것 대신 악의적인 종속성을 설치하도록 속이는 종속성 혼동 공격을 알게 되었습니다. 이러한 공격에 대해 소프트웨어 공급망을 강화하기 위해 NuGet 팀은 종속성을 특정 원본에 매핑할 수 있는 새로운 기능을 개발했습니다. 다음은 원본 매핑을 사용하여 프로젝트를 보호하는 방법의 예입니다.

<!-- Define a global packages folder for your repository. -->
<!-- This is where installed packages will be stored locally. -->
<config>
  <add key="globalPackagesFolder" value="globalPackagesFolder" />
</config>

<!-- Define my package sources, nuget.org and contoso.com. -->
<!-- `clear` ensures no additional sources are inherited from another config file. -->
<packageSources>
  <clear />
  <!-- `key` can be any identifier for your source. -->
  <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  <add key="contoso.com" value="https://contoso.com/packages/" />
</packageSources>

<!-- Define mappings by adding package ID patterns beneath the target source. -->
<!-- Contoso.* packages will be restored from contoso.com, everything else from nuget.org. -->
<packageSourceMapping>
  <!-- key value for <packageSource> should match key values from <packageSources> element -->
  <packageSource key="nuget.org">
    <package pattern="*" />
  </packageSource>
  <packageSource key="contoso.com">
    <package pattern="Contoso.*" />
  </packageSource>
</packageSourceMapping>

올해 초 릴리스된 블로그에서 원본 매핑에 대해 자세히 확인할 수 있습니다.

Visual Studio의 패키지 취약성

Visual Studio 내에서 NuGet 패키지 관리자 사용하는 경우 이제 취약성의 수 및 심각도와 같은 세부 정보와 권고에 대해 자세히 알아볼 수 있는 직접 링크를 포함하여 패키지에 대한 패키지 취약성이 표시됩니다.

Visual Studio Package Vulnerabilities

다시 시도 및 백오프 동작

이제 NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY NuGet 클라이언트의 재시도 및 백오프 동작(예: 최대 재시도 횟수 늘리기 및 약한 인터넷 연결 발생 시 복원력 있는 환경의 지연 증가)을 개선하는 플래그가 있습니다.

기본 파일 확장자 제외

이제 MSBuild 플래그 <AllowedOutputExtensionsInPackageBuildOutputFolder> 를 사용하여 패키지의 빌드 출력에 포함된 파일 확장자를 편집할 수 있습니다. 이렇게 하면 빌드 출력 폴더에 포함되는 확장을 더 자세히 제어할 수 있습니다.

Visual Studio의 향상된 사용 중단 정보

이제 Visual Studio에서 사용되지 않는 패키지에는 사용할 제안된 대체 패키지에 대한 링크가 포함됩니다. 이 기능을 사용하여 적극적으로 기본 패키지를 빠르게 찾아 설치할 수 있습니다.

Visual Studio Package Deprecations

Visual Studio에서 패키지 추가 정보 추가

이제 Visual Studio 내에서 직접 패키지 README.md 파일을 추가할 수 있습니다. 추가 정보는 패키지에 대한 중요한 정보를 전달하는 데 도움이 됩니다. NuGet.org 패키지를 방문할 때 방문자가 볼 수 있는 첫 번째 항목인 경우가 많습니다. 추가 정보 파일에는 일반적으로 다음 정보가 포함됩니다.

  • 패키지에서 수행하는 작업
  • 패키지가 유용한 이유
  • 사용자가 패키지를 시작하는 방법
  • 사용자가 도움을 받거나 패키지에 기여할 수 있는 위치

블로그에서 NuGet 패키지에 추가 기능을 추가하는 방법에 대해 자세히 알아보세요.

Visual Studio에서 빠른 솔루션 로드 및 분기 전환

Visual Studio 2022에서 NuGet은 여러 번이 아닌 한 번만 복원을 호출하여 큰 솔루션의 성능을 향상시키기 위해 NuGet 패키지 복원과 일반적인 Visual Studio 구성 요소 간의 계약을 다시 정의했습니다. 이렇게 하면 백그라운드 프로세스가 크게 완료되는 데 걸리는 시간이 향상됩니다.

Visual Studio 2022 미리 보기를 설치하고 큰 솔루션을 로드하거나 분기 간에 전환할 때 더 빠른 환경을 발견했는지 알려주세요.

NuGet의 SolutionRestoreManager Visual Studio API가 NuGet.VisualStudio 패키지로 이동됨

NuGet.SolutionRestoreManager.Interop는 더 이상 업데이트되지 않으며 해당 API는 NuGet.VisualStudio 패키지에 병합되었습니다. Visual Studio 2022(17.0)에서 작동하도록 기존 Visual Studio 확장을 업데이트하고 이전에 NuGet.SolutionRestoreManager.Interop를 사용했던 경우 해당 패키지를 제거하고 NuGet.VisualStudio를 버전 6.0.0으로 업그레이드/설치해야 합니다. 네임스페이스와 클래스는 동일하게 기본 API 관점에서 호환됩니다.

또한 Visual Studio의 정책 변경에 따라 NuGet.VisualStudio는 더 이상 사용하지 EmbedInteropTypes않습니다. 따라서 확장에는 NuGet.VisualStudio.dll 대한 컴파일 시간 참조가 있습니다. Nuget은 바인딩 리디렉션을 사용하도록 Visual Studio에 지시하므로 NuGet이 최신 버전으로 업데이트되고 확장이 이전 버전의 어셈블리에 대해 컴파일될 때 확장이 영향을 받지 않습니다. 이러한 이유로 다운로드 크기를 줄이기 위해 vsix에서 NuGet의 어셈블리를 표시하지 않을 수 있습니다. NuGet의 패키지는 NuGet 6.2(Visual Studio 17.2의 경우)에서 자동으로 이 작업을 수행하도록 업데이트됩니다.

vsix에서 NuGet의 어셈블리를 표시하지 않도록 하려면 프로젝트 파일에 다음을 추가합니다.

<ItemGroup>
  <SuppressFromVsix Include="NuGet.VisualStudio.dll" Visible="false" />
  <SuppressFromVsix Include="NuGet.VisualStudio.Contracts.dll" Visible="false" />
</ItemGroup>

기능:

  • nuget 패키지에서 특정 빌드 출력 확장을 제외하기 위한 후크 추가 - #10690

  • net6.0+를 사용할 때 xamarin TFM에 대한 새 우선 순위 구현 - #10717

  • net6.0+ 프로젝트의 경우 xamarin.ios로 "대체"할 때 maccatalyst 경고 구현 - #10718

  • 구성의 일부로 패키지 네임스페이스 지원 추가 - 읽기 기능만 추가 - #10725

  • 패키지 네임스페이스: PackageReference 복원에서 패키지 다운로드에서 패키지 네임스페이스 필터링 계정 - #10732

  • nuget.exe 및 msbuild /t:restore에서 packages.config 복원에 네임스페이스 필터링 지원 추가 - #10737

  • 더 나은 일괄 처리 복원/분기 스위치를 nuget하는 데 도움이 되도록 복원 원본을 식별하기 위한 계약을 추가합니다. - #10807

  • net6.0-tizen 및 net6.0-android에 대한 지원 추가 - #10819

  • Visual Studio에서 packages.config 복원에 대한 네임스페이스 필터링 지원 추가 - #10823

  • TfmSpecificDebugSymbolsFile에 대한 지원을 추가하여 내부 빌드에 기호 제공 - #10913

  • 취약한 패키지가 설치된 경우 설치 탭에 경고 아이콘 표시 - #10982

  • 취약성이 있는 경우 패키지 목록에서 패키지별 경고 아이콘 표시 - #10983

  • PMUI의 패키지 세부 정보 창에 패키지 취약성 세부 정보 표시 - #10985

  • PM UI의 세부 정보 페이지에서 사용 중단 링크 추가 - #10996

  • [기능]: Nuget 클라이언트에 대해 다시 시도 횟수 및 백오프 동작을 구성할 수 있도록 설정 - #11027

  • [기능]: PackageReference 및 PackageDownload 시나리오에서 작동하는 패키지 네임스페이스에 대한 모든 패키지 설치 규칙을 해결합니다. - #11035

  • [기능]: 패키지 구성 스타일 프로젝트에서 패키지 네임스페이스 작업에 대한 모든 패키지 설치 규칙 해결 - #11036

이번 릴리스에서 수정된 문제

DCR:

  • 다른 패키지 관리자가 호환되는 것으로 표시될 수 있도록 확장성을 제거하는 것이 좋습니다. - #6623

  • NuGet의 VS 확장성 패키지/어셈블리에 EmbedInteropTypes 사용 중지 - #10892

  • Project.nuget.g.targets가 MSBuild 16 이상에서 MSBuildAllProjects 앞에 추가되어서는 안 됩니다. - #10895

  • 사용되지 않는 코어 API 제거 - #10940

  • NuGet.SolutionRestoreManager.Interop를 NuGet.VisualStudio에 병합 - #10957

  • RuntimeEnvironmentHelper.IsDev14 제거 - #11000

  • Newtonsoft.Json을 13.0.1로 업데이트 - #11095

  • [DCR]: packageNamespaces 기능 이름을 packageSourceMapping으로 이름 바꾸기 - #11205

버그:

  • 패키지 저장 모드로 설치 "nuspec" 항상 다시 설치 - #2402

  • Update-Package -reinstall -ProjectName <project> 이 PR에 대해 작동하지 않음 - #6088

  • "동일한 키를 가진 항목이 이미 추가되었습니다." - 프로젝트 그래프에 projectName == packageRef 이름(동일한 버전)이 있는 경우 - #6795

  • [테스트 실패] "라이선스 승인" 대화 상자에서 두 번째 중복 문자열 "라이선스 승인"을 제거하는 것이 좋습니다. - #8162

  • nuget.exe 사용하여 구성 키를 제거할 수 없습니다. - #8223

  • msbuild /t:Restore 및 Visual Studio는 어셈블리 이름 != 프로젝트 이름 - #8272일 때 다른 자산 파일을 생성합니다.

  • PM UI는 999,500 <= count <=999,999 - #8800일 때 다운로드 수를 인간화하지 않습니다.

  • Roslyn Analyzer 제안 "패키지 관리자와 함께 설치"가 NuGet을 잘못된 탭으로 엽니다. - #10124

  • 솔루션 파일을 통해 호출할 때 프로젝트가 아닌 KnownToBeMSBuildFormat 경우 StaticGraph 복원을 명확하게 호출해야 합니다. - #10363

  • "nuget spec" 명령은 iconUrl - #10400을 사용하여 .nuspec 파일을 생성합니다.

  • Rfc3161TimestampTokenInfo.GetNonce가 throw할 수 있습니다 . - #10484

  • Mono에서 명령이 비활성화되어 있지 않은지 확인 - #10585

  • CreateLockFileTargetLibrary 메서드는 복원 작업을 느리게 합니다. - #10614

  • PackageArchieveReader는 CopyNupkgAsync를 재정의하지 않으므로 패키지 추출이 실패합니다. - #10708

  • 패키지 네임스페이스 정보를 복원 명령에 전파 - #10736

  • PMUI의 packages.config 패키지 설치/업데이트에서 네임스페이스 필터링이 준수되는지 확인 - #10738

  • NuGet.Packaging.Extraction: 리소스에서 예외를 찾을 수 없음 - #10776

  • 기호에 snupkg를 사용할 때 embeded PackageReadmeFile을 사용할 수 없음 - #10791

  • NuGet 프로젝트 초기화에서 중복 UI 지연 스위치 제거 - #10824

  • 복원 코드 경로에서 불필요한 ToList 열거형 제거 - #10835

  • IVsPackageInstallerServices를 사용되지 않음으로 표시 - #10836

  • 10억 번 이상 다운로드된 NuGet 패키지는 잘못된 단위를 표시합니다. - #10864

  • 어두운 테마에서 "업데이트" 및 "통합" 탭 오른쪽에 있는 숫자의 배경색을 보기 어렵습니다. - #10896

  • IVsProjectRestoreInfoSource 개선 사항 - #10898

  • net5.0-windows를 대상으로 하는 Sdk-Style C# 프로젝트로 packages.lock.json 손상됨 - #10901

  • IVsSolutionRestoreService4에 대한 기본 구현 추가 - #10908

  • [응답성] 불필요한 GetServiceAsync 확장을 통해 백그라운드 스레드에서 암시적 RPC 제거 - #10916

  • bool의 Boxing은 해시 코드가 과도한 할당을 일으키는 것을 계산하는 것입니다 - #10917

  • 라이브러리 종속성을 반복하면 열거자가 과도하게 할당됩니다. - #10918

  • 호환성 캐시 조회는 각 조회에 Func를 할당합니다. - #10919

  • DependencyWalker.CreateGraphNode의 WhereListIterator 초과 할당 - #10920

  • 복원하는 동안 예외: "메타데이터 복원이 필요한 대상 프레임워크 목록을 잘못 표시합니다." - #10924

  • 관리 코드 규칙에서 프레임워크 리듀서 공유 - #10925

  • NuGet VSIX가 잘못된 바인딩 리디렉션으로 생성됨 - #10946

  • init 스크립트를 실행할 때 NuGet 패키지 관리자 UI 지연 - #10947

  • nuget 복원/설치 및 dotnet 복원 패키지 또는 기타 동등한 명령에 전달된 sourceUri 지원 - #10948

  • nuget.exe 설치 명령에 대한 네임스페이스 필터링 지원 - #10961

  • 모든 세그먼트에 대한 원시 속성 생성 중지 - #10969

  • 선택되지 않은 전이적 참조에서 예기치 않은 NU1605(하위 그래프 정리) - #10972

  • NuGet.Localization에 패키지 아이콘이 없음 - #10975

  • 프로젝트 닫기를 계산하는 동안 사전에 불필요하게 크기 조정 방지 - #10976

  • I설정 관련 설명서가 충돌합니다. AddOrUpdate - #10980

  • 파일을 복사하고 서명의 유효성을 검사할 때 풀링된 바이트 배열 사용 - #10988

  • 종속성 워커에서 Task.WhenAny 할당 방지 - #10989

  • packages.config 패키지 설치/업데이트 PMC에서 네임스페이스 필터링이 준수되는지 확인 - #11001

  • packages.config 패키지 설치/업데이트 IV 설치 관리자 API에서 네임스페이스 필터링이 준수되는지 확인 - #11002

  • [버그]: 선택한 패키지가 이미 설치된 경우 PM UI에 다운로드 횟수가 0개 표시됨 - #11012

  • VersionFormatter에서 할당 감소 - #11014

  • 사용되지 않는 사용되지 않는 형식: LibraryDependencyType 및 관련 - #11015

  • [버그]: nuget.exe install packages.config #11018을 적용 -PackageSaveMode nuspec - 하지 않음

  • [버그]: $(IsPackable) 인용되지 않음 - #11025

  • PMUI 패키지 네임스페이스 필터링을 위한 다중 원본 리포지토리를 사용하여 Apex 테스트 만들기 - #11026

  • [버그]: [접근성] 밝은 테마 또는 어두운 테마를 사용하여 PM UI 검색 결과에서 링크를 읽기 어렵다 - #11055

  • IVsSolutionRestoreService4는 IVsSolutionRestoreService3 - #11098을 확장해야 합니다.

  • [버그]: PMUI의 세부 정보 창에서 권고 링크를 정렬해야 합니다. - #11101

  • 설치된 취약/사용 중단 패키지 버전의 경고 아이콘 도구 설명이 명확하지 않음 - #11103

  • [응답성] RestoreOperationLogger+StatusBarProgress.Dispose가 UI 스레드를 기다리는 스레드 풀 스레드를 차단합니다. - #11115

  • 마지막 복원 메트릭 이후 시간 추가 - #11124

  • [버그]: 5.9.1에서 5.10.0 사이의 재귀 <files> 항목 처리에서 nuget.exe 회귀 - #11125

  • 프로젝트에 보류 중인 지명이 있을 때 대기 시 대기 - #11132

  • dotnet add package에 전달된 sourceUri 지원 옵션 - #11140

  • [버그]: VS PM UI가 패키지에 대한 JPEG 아이콘을 표시하지 않음 - #11144

  • UIDelay: nuget.packagemanagement.visualstudio.dll!NuGet.PackageManagement.VisualStudio.VsCoreProjectSystemReferenceReader+<GetProjectReferencesAsync>d__ - CPS 프로젝트 - #11162

  • [버그]: dotnet list package --outdated --interactive 자격 증명 공급자가 나열된 모든 패키지에 대해 캐시를 무효화합니다. - #11169

  • [버그]: packages.config 시나리오의 패키지 네임스페이스는 패키지에 대해 일치하는 네임스페이스를 찾을 수 없는 경우 모든 원본을 대체 옵션으로 사용합니다. - #11170

  • NuGet 프로젝트 초기화 중 UI 스레드에서 MEF 조회 방지 - #11176

  • [버그]: 설치된 탭의 경고 표시기 이미지에 대한 도구 설명이 더 이상 작동하지 않음 - #11183

  • MEF 서비스를 검색하는 모든 ServiceLocator 호출은 UI 스레드를 피해야 합니다. - #11201

  • [버그]: Visual Studio에서 누락된 원격 분석 이벤트 - #11206

  • 중복된 EnvDTEProjectUtility.IsSupportedAsync 호출 방지 - #11207

  • IVsSolutionManager.GetSolutionDirectoryAsync 추가 - 성능을 향상시키고 비동기 코드 경로에서 호출 스레드 차단을 중지합니다. - #11208

  • 패키지 네임스페이스 기능의 새 이름을 반영하도록 제품/테스트 코드의 형식/변수 이름 바꾸기 - #11216

  • [버그]: 관련이 없는 git 리포지토리의 하위 디렉터리에서 ArPow 빌드가 제대로 작동하지 않음 - #11227

  • dotnet list package --vulnerable, --deprecated, --outdated does not work for 전이적 전용 긍정 - #10767

이 릴리스에서 해결된 모든 문제 목록 - 6.0

이 릴리스의 커밋 목록 - 6.0.0

요약: 6.0.1의 새로운 기능

Visual Studio만 이 버전의 NuGet으로 업데이트되었습니다.

이번 릴리스에서 수정된 문제

이 릴리스의 커밋 목록 - 6.0.1

커뮤니티 기여

이 NuGet 릴리스를 멋지게 만드는 데 도움을 주신 모든 기여자 감사합니다!

누가 Prs 문제
omajid 3866 Rfc3161TimestampTokenInfo에서 nonce가 null인 처리 - #10484
marcin-krystianc 3934 LockFileTargetLibrary에 대한 캐시 추가 - #10614
krafs 4151 I설정 문서에서 반환 값이 제거되었습니다. AddOrUpdate - #10980
황친진 4148 PackageSaveMode nuspec 항상 다시 설치 수정 - #2402
Insomniak47 4190 fix(docs): 기여 지침에서 닫힌/막다른 링크에 대한 링크 제거 - #8987
marcin-krystianc 4194 복원 작업 실패에 대한 성능 스크립트 계정 만들기 - #9968
에리아완 주 4159 작은따옴표로 서라운드($IsPackable) 수정 - #11025
황친진 4193 packages.config를 설치하면 PackageSaveMode - #11018이 적용됩니다.
mfkl 4199 test: use new DependencyGraphSpec - #11168
omajid 4254 git apply와 함께 --work-tree 사용 - #11227

피드백 환영

Microsoft는 사용자의 의견을 소중하게 생각합니다. 이 릴리스에 문제가 있는 경우 GitHub 문제 및 Visual Studio 개발자 커뮤니티에서 기존 문제를 검사. NuGet 내의 새로운 문제는 GitHub 문제를 보고하세요. 일반적인 NuGet 환경 문제의 경우 문제 보고 도움말 아래의 즐겨찾는 IDE에 있는 문제 보고 옵션을 통해 알려주세요.>