共用方式為


即將淘汰的套件

如果您不再維護套件,或想要鼓勵套件的取用者移至另一個套件,則可以取代套件。

套件淘汰與 取消列出 您的套件不同,如下所述:

  • 取消列出 套件會防止探索,因為它會在搜尋結果中隱藏。
  • 取代 套件可讓套件的現有取用者瞭解其是否已安裝或用於其專案中。 它也會讓他們知道淘汰的原因,以及由您 (套件發行者) 指定的替代建議套件。 取代封裝並不會取消列出封裝。

身為發行者,您可以選擇取消列出和取代套件。

取代工作流程

  1. 若要取代套件,請移至 [管理套件 ],然後選取 [淘汰]:

    Go to deprecate package option

  2. 選取您想要取代的版本。 如果您想要取代所有版本,請選擇 [選取所有版本 ] 選項。

    Select package versions to deprecate

  3. 選擇淘汰的原因。 如果不再維護套件,請選擇 [ 舊版 ] 選項。 如果特定版本有重大錯誤,請選擇 [有重大錯誤 ] 選項。 基於任何其他原因,請選取 [其他]。 您一律可以指定替代的建議套件 (和版本) 和自訂訊息給擁有者。

    Select reasons alternate package recommendation and custom message

注意

自訂訊息只會顯示在 nuget.org 上,但不會顯示來自用戶端的訊息。 目前,例如 和 NuGet 封裝管理員 的 dotnet.exe 用戶端不會顯示自訂訊息。

已淘汰套件的用戶端體驗

一旦套件已被取代,其取用者會透過下列方式收到通知, (視使用的用戶端而定) 。

Visual Studio

從 Visual Studio 2019 16.3 版開始提供

Visual Studio會在索引標籤上 Installed 警告已淘汰套件的使用方式。如果存在) ,它會顯示套件的警告及其淘汰資訊 (包括已淘汰的原因,以及替代套件改用。

Deprecated packages on Visual Studio installed tab of package manager

dotnet.exe

從 .NET SDK 3.0 開始提供

如果您使用 dotnet.exe,您可以在方案或專案資料夾上執行 命令 dotnet list package --deprecated ,以取得已被取代的套件清單以及取代資訊:

> dotnet list package --deprecated

The following sources were used:
   https://api.nuget.org/v3/index.json

Project `My.Test.Project` has the following deprecated packages
   [netcoreapp3.0]:
   Top-level Package      Resolved   Reason(s)   Alternative
   > My.Sample.Lib        6.0.0      Legacy      My.Awesome.Package

將熱門性轉移至較新的套件

已淘汰舊版套件的套件作者可以選擇將其「熱門性」傳輸到較新的套件,以提升較新套件的搜尋排名。 這可協助客戶探索較新的套件,而不是已被取代的套件。

例如,假設我有兩個套件:

  • 我已被取代的舊版套件, Contoso.Legacy 下載次數為 3 百萬
  • 我的最新套件, Contoso.Latest 有 5 個下載

NuGet.org 偏好具有較高下載/熱門性的搜尋結果。 假設搜尋查詢 「Contoso」,我的已被取代的套件 Contoso.Legacy 可能會排名在搜尋結果中最新的套件 Contoso.Latest 之上。

若要解決此問題,我可以套用 以將已被取代舊版套件的熱門程度轉移至我的最新套件。 這會導致 Contoso.Latest 在搜尋結果中排名較高,而 Contoso.Legacy 排名較低。 只有套件的內部熱門分數會受到影響,每個套件的實際下載計數將不會受到影響。

注意

熱門傳輸可能會讓取用者難以找到舊版套件。

請參閱下表,以具體瞭解熱門傳輸如何影響查詢 「Contoso」 的搜尋排名:

搜尋排名 熱門傳輸之前 熱門轉移之後
1 Contoso.Legacy、3M 下載 Contoso.Latest,5 個下載
2 Contoso.Scanner,2M 下載 Contoso.Scanner,2M 下載
3 Contoso.Core,1.5M 下載 Contoso.Core,1.5M 下載
4 Contoso.UI,1M 下載 Contoso.UI,1M 下載
... ... ...
20 Contoso.Latest,5 個下載 Contoso.Legacy、3M 下載

熱門傳輸應用程式程式

  1. 檢閱 熱門傳輸需求
  2. 電子郵件 account@nuget.org ,其中包含應傳輸其熱門性的已淘汰套件,以及應接收熱門傳輸的穩定套件清單 () 。

提交應用程式之後,我們會通知您應用程式的接受或拒絕 (,以及造成拒絕) 的準則。 我們可能需要詢問額外的識別問題以確認擁有者身分識別。

熱門傳輸需求

  • 舊版套件和新套件必須共用所有擁有者。
  • 新的套件必須與命名和函式 (中的舊版套件清楚相關,也就是演進或新一代) 。
  • 舊版套件的所有版本都必須已被取代,並指向接收傳輸的新套件。
  • 熱門傳輸不得造成NuGet使用者混淆,或造成NuGet搜尋體驗的混淆。
  • 新的套件必須具有穩定版本。
  • 舊版套件不得從另一個已被取代的套件接收熱門傳輸。

進階熱門傳輸案例

套件匯總

我可以轉移多個已淘汰套件的熱門度,以偏好單一新套件。 例如,假設我有 3 個套件:

  • 我的第一個已被取代的舊版套件, Contoso.Legacy1
  • 我第二個已被取代的舊版套件, Contoso.Legacy2
  • 我的新合併套件, Contoso.Latest

在淘汰 Contoso.Legacy1Contoso.Legacy2 之後,我可以套用 以將其熱門度轉移至 Contoso.Latest

套件分割

已淘汰的套件熱門度可以傳輸至最多 5 個較新的套件,並加以分割。 如果已淘汰套件的功能已分割成多個新套件,這非常有用。 例如,假設我有 3 個套件:

  • 我已被取代的舊版套件, Contoso.Legacy
  • 我的第一個新套件 Contoso.Web
  • 我的第二個新套件 Contoso.Cloud

Contoso.Legacy 同時包含 Web 和雲端功能,但我決定將該功能分成不同的套件,以供新一代使用。 在 Contoso.Legacy 淘汰 之後,我可以套用 將它的熱門度同時傳送至 Contoso.WebContoso.Cloud

警告

傳輸的熱門程度將會平均分割到所有新套件之間。 因此,建議您盡可能將已被取代的套件熱門程度傳輸至最少的套件。

熱門傳輸鏈結

如果已被取代的套件已經從另一個已被取代的套件收到熱門度,就無法傳輸其熱門性。 例如,假設我有 3 個套件:

  • 我已被取代的舊版套件, Contoso.First
  • 我已被取代的舊版套件, Contoso.Second
  • 我的新套件 Contoso.Latest

如果 Contoso.First 將其熱門度轉移至 Contoso.Second, ,則 Contoso.Second 無法將其熱門度轉移至 Contoso.Latest 。 相反地,我們建議根據套件匯總案例,將 和 Contoso.SecondContoso.First 受歡迎度轉移至 Contoso.Latest