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.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 패키지 관리자 사용하는 경우 이제 취약성의 수 및 심각도와 같은 세부 정보와 권고에 대해 자세히 알아볼 수 있는 직접 링크를 포함하여 패키지에 대한 패키지 취약성이 표시됩니다.
다시 시도 및 백오프 동작
이제 NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY
NuGet 클라이언트의 재시도 및 백오프 동작(예: 최대 재시도 횟수 늘리기 및 약한 인터넷 연결 발생 시 복원력 있는 환경의 지연 증가)을 개선하는 플래그가 있습니다.
기본 파일 확장자 제외
이제 MSBuild 플래그 <AllowedOutputExtensionsInPackageBuildOutputFolder>
를 사용하여 패키지의 빌드 출력에 포함된 파일 확장자를 편집할 수 있습니다. 이렇게 하면 빌드 출력 폴더에 포함되는 확장을 더 자세히 제어할 수 있습니다.
Visual Studio의 향상된 사용 중단 정보
이제 Visual Studio에서 사용되지 않는 패키지에는 사용할 제안된 대체 패키지에 대한 링크가 포함됩니다. 이 기능을 사용하여 적극적으로 기본 패키지를 빠르게 찾아 설치할 수 있습니다.
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)
인용되지 않음 - #11025PMUI 패키지 네임스페이스 필터링을 위한 다중 원본 리포지토리를 사용하여 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.1의 새로운 기능
Visual Studio만 이 버전의 NuGet으로 업데이트되었습니다.
이번 릴리스에서 수정된 문제
- [버그]: Visual Studio 17 - #11367의 서비스 브로커에서 INuGetProjectService를 가져올 수 없습니다.
- [버그]: 패키지 관리자 콘솔 초기화로 인해 교착 상태가 발생할 수 있습니다. - #11320
커뮤니티 기여
이 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에 있는 문제 보고 옵션을 통해 알려주세요.>