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

如果您目前不熟悉 .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 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> 專案 - #11125

  • Await 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

此版本中的認可清單 - 6.0.0

摘要:6.0.1 的新功能

只有 Visual Studio 已使用此版本的 NuGet 進行更新。

本版已修正的問題

  • [Bug]: 無法從 Visual Studio 17 中的 Service Broker 取得 INuGetProjectService - #11367
  • [Bug]: 封裝管理員 控制台初始化可能會導致死結 - #11320

此版本中的認可清單 - 6.0.1

社群貢獻

感謝您協助讓此 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 中找到>的問題