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 版 | N/A |
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 | N/A | 6.0.1181 |
6.0.6 | N/A | 6.0.1271 |
1 隨 Visual Studio 2022 with.NET Core 工作負載一起安裝
摘要:6.0.6 的新功能
- [安全性]: Microsoft Security Advisory CVE-2024-0057 |NuGet 用戶端安全性功能略過弱點 - #12653
摘要:6.0.5 的新功能
- [安全性]: Microsoft Security Advisory CVE-2023-29337 |NuGet 用戶端遠端程式代碼執行弱點 - #12653
注意
Linux 上的行為中斷性變更。 NuGet 在其各種作業期間儲存暫存盤的暫存資料夾位置已從 /tmp/NuGetScratch
變更為 /tmp/NuGetScratch<username>
。 例如,針對使用者 User1,暫存資料夾會是 /tmp/NuGetScratchUser1
。
摘要:6.0.3 的新功能
- [安全性]: Microsoft Security Advisory CVE-2022-41032 | .NET 特權提升弱點 - #12149
注意
Visual Studio 17.0、MSBuild 17.0 和 .NET 6.0 需要NuGet.exe 6.0 或更新版本。
摘要:6.0.2 的新功能
- [安全性]: Microsoft Security Advisory 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 Preview,並讓我們知道載入大型解決方案或在分支之間切換時,是否有更快速的體驗!
NuGet 的 SolutionRestoreManager Visual Studio API 已移至 NuGet.VisualStudio 套件
NuGet.SolutionRestoreManager.Interop 已不再更新,且其 API 已合併至 NuGet.VisualStudio 套件。 如果您要更新現有的 Visual Studio 延伸模組以使用 Visual Studio 2022 (17.0),而且您先前使用的是 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+ 專案,將maccatalyst警告「回復」到 xamarin.ios 時實作 - #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
[測試失敗]建議移除 [授權接受] 對話框中的第二個重複字串 “License Acceptance” - #8162
無法使用 nuget.exe 移除組態金鑰 - #8223
msbuild /t:Restore 和 Visual Studio 會在元件名稱 != 項目名稱 - #8272 時產生不同的資產檔案
當 999,500 = count =999,999,999 - #8800 <時,PM UI 不會使下載計數<人性化
Roslyn Analyzer 建議「使用套件管理員安裝」會開啟 NuGet 到錯誤的索引標籤 - #10124
當專案不是
KnownToBeMSBuildFormat
透過方案檔呼叫時, StaticGraph Restore 應該清楚呼叫 - #10363“nuget spec” 命令會產生具有 iconUrl 的 .nuspec 檔案 - #10400
Rfc3161TimestampTokenInfo.GetNonce 可以擲回 - #10484
Mono 上未停用驗證命令 - #10585
CreateLockFileTargetLibrary 方法會減緩還原作業 - #10614
PackageArchieveReader 不會覆寫 CopyNupkgAsync,因此套件擷取失敗 - #10708
將套件命名空間信息傳播至還原命令 - #10736
請確定在 PMUI 中的 packages.config 套件安裝/更新中遵守命名空間篩選 - #10738
NuGet.Packaging.擷取:找不到資源的例外狀況 - #10776
針對符號使用 snupkg 時,無法使用內嵌的 PackageReadmeFile - #10791
拿掉 NuGet 專案初始化中的備援 UI 延遲參數 - #10824
拿掉還原程式代碼路徑中不必要的 ToList 列舉 - #10835
將 IVsPackageInstallerServices 標示為已淘汰 - #10836
下載超過 10 億次的 NuGet 套件會顯示錯誤的單元 - #10864
很難在深色主題的 [更新] 和 [合併] 索引卷標右邊看到數位的背景色彩 - #10896
IVsProjectRestoreInfoSource 改善 - #10898
packages.lock.json以 net5.0-windows 為目標的 Sdk-Style C# 專案中斷 - #10901
新增 IVsSolutionRestoreService4 的預設實作 - #10908
[回應性]透過不需要的 GetServiceAsync 擴充功能從背景線程移除隱含 RPC - #10916
bool 的 Boxing 是計算哈希碼造成過度配置 - #10917
逐一查看連結庫相依性會導致列舉值過度配置 - #10918
相容性快取查閱會為每個查閱配置 Func - #10919
DependencyWalker.CreateGraphNode 中 WhereListIterator 的過度配置 - #10920
還原時發生例外狀況:「還原元數據錯誤所需的目標架構清單」- #10924
跨 Managed 程式代碼慣例共享架構歸納器 - #10925
NuGet VSIX 會產生不正確的系結重新導向 - #10946
執行 init 腳本時 NuGet 封裝管理員 UI 延遲 - #10947
支援在 nuget restore/install 和 dotnet restore package 或其他對等命令上傳遞的 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 套件安裝/更新 IVs 安裝程式 API 中已遵守命名空間篩選 - #11002
[錯誤]:P M UI 顯示已安裝所選套件時的下載計數 - #11012
減少 VersionFormatter 中的配置 - #11014
過時未使用的類型:LibraryDependencyType 和相關 - #11015
[Bug]:
nuget.exe install packages.config
不接受-PackageSaveMode nuspec
- #11018[Bug]:
$(IsPackable)
未加上引號 - #11025使用適用於 PMUI 套件命名空間篩選的多來源存放庫建立 Apex 測試 - #11026
[錯誤]: [輔助功能] 使用淺色或深色主題在 PM UI 搜尋結果中難以讀取連結 - #11055
IVsSolutionRestoreService4 應擴充 IVsSolutionRestoreService3 - #11098
[Bug]: 建議鏈接應該對齊 PMUI 的詳細數據窗格中 - #11101
已安裝的易受攻擊/淘汰套件版本警告圖示的工具提示尚不清楚 - #11103
[回應性]RestoreOperationLogger+StatusBarProgress.Dispose 封鎖等候 UI 線程的線程集區線程 - #11115
自上次還原計量以來新增時間 - #11124
[Bug]: nuget.exe回歸處理 5.9.1 到 5.10.0 之間的遞歸
<files>
專案 - #11125Await WhenNominated when a project has a pending nomination - #11132
dotnet add 套件上傳遞的支援 sourceUri 選項 - #11140
[錯誤]:VS PM UI 不會顯示套件的 JPEG 圖示 - #11144
UIDelay:
nuget.packagemanagement.visualstudio.dll!NuGet.PackageManagement.VisualStudio.VsCoreProjectSystemReferenceReader+<GetProjectReferencesAsync>d__
- CPS 專案 - #11162[Bug]:
dotnet list package --outdated --interactive
讓認證提供者使每個列出的套件的快取失效 - #11169[Bug]:當找不到套件相符的命名空間時,package.config 案例的套件命名空間會使用所有來源做為後援選項 - #11170
在 NuGet 專案初始化期間避免 UI 線程上的 MEF 查閱 - #11176
[Bug]: [已安裝] 索引標籤中警告指標映射上的工具提示已不再運作 - #11183
擷取MEF服務的所有ServiceLocator呼叫都應該避免UI線程。 - #11201
[Bug]: Visual Studio 中遺漏遙測事件 - #11206
避免重複的 EnvDTEProjectUtility.IsSupportedAsync 呼叫 - #11207
新增 IVsSolutionManager.GetSolutionDirectoryAsync - 改善效能,並停止封鎖異步程式代碼路徑中的呼叫線程。 - #11208
重新命名產品/測試程式代碼中的類型/變數,以反映套件命名空間功能的新名稱 - #11216
[Bug]: ArPow 組建在不相關的 Git 存放庫子目錄中時無法正常運作 - #11227
dotnet list package --vulnerable, --deprecated, --過時不適用於僅限轉移的正面 - #10767
摘要:6.0.1 的新功能
只有 Visual Studio 已使用此版本的 NuGet 進行更新。
本版已修正的問題
- [Bug]: 無法從 Visual Studio 17 中的 Service Broker 取得 INuGetProjectService - #11367
- [Bug]: 封裝管理員 控制台初始化可能會導致死結 - #11320
社群貢獻
感謝您協助讓此 NuGet 版本變得真棒的所有參與者!
負責人 | PR | 問題 |
---|---|---|
omajid | 3866 | 處理 Rfc3161TimestampTokenInfo 中的 nonce - #10484 |
marcin-krystianc | 3934 | 新增 LockFileTargetLibrary 的快取 - #10614 |
krafs | 4151 | 已從 I 設定 上的檔案中移除傳回值。AddOrUpdate - #10980 |
黃琴金 | 4148 | 修正 PackageSaveMode nuspec 一律重新安裝 - #2402 |
失眠47 | 4190 | fix(docs):在參與指導方針中移除已關閉/死端鏈接的連結 - #8987 |
marcin-krystianc | 4194 | 讓效能腳本帳戶進行還原作業失敗 - #9968 |
eriawan | 4159 | 修正以單引弧括住 ($IsPackable) - #11025 |
黃琴金 | 4193 | 安裝 packages.config 應接受 PackageSaveMode - #11018 |
mfkl | 4199 | test:使用新的 DependencyGraphSpec - #11168 |
omajid | 4254 | 使用 --work-tree 搭配 git apply - #11227 |
歡迎意見反應
您的意見反應對我們非常寶貴。 如果此版本發生任何問題,請檢查我們的 GitHub 問題和Visual Studio 開發人員社群 是否有現有問題。 如需 NuGet 內的新問題,請回報 GitHub 問題。 如需一般 NuGet 體驗問題,請透過 [說明回報問題] 底下的 [回報問題] 選項,讓我們知道您最愛的 IDE 中找到>的問題。