即將淘汰的套件
如果您不再維護套件,或想要鼓勵套件的取用者移至另一個套件,則可以取代套件。
套件淘汰與 取消列出 您的套件不同,如下所述:
- 取消列出 套件會防止探索,因為它會在搜尋結果中隱藏。
- 取代 套件可讓套件的現有取用者瞭解其是否已安裝或用於其專案中。 它也會讓他們知道淘汰的原因,以及由您 (套件發行者) 指定的替代建議套件。 取代封裝並不會取消列出封裝。
身為發行者,您可以選擇取消列出和取代套件。
取代工作流程
若要取代套件,請移至 [管理套件 ],然後選取 [淘汰]:
選取您想要取代的版本。 如果您想要取代所有版本,請選擇 [選取所有版本 ] 選項。
選擇淘汰的原因。 如果不再維護套件,請選擇 [ 舊版 ] 選項。 如果特定版本有重大錯誤,請選擇 [有重大錯誤 ] 選項。 基於任何其他原因,請選取 [其他]。 您一律可以指定替代的建議套件 (和版本) 和自訂訊息給擁有者。
注意
自訂訊息只會顯示在 nuget.org 上,但不會顯示來自用戶端的訊息。 目前,例如 和 NuGet 封裝管理員 的 dotnet.exe
用戶端不會顯示自訂訊息。
已淘汰套件的用戶端體驗
一旦套件已被取代,其取用者會透過下列方式收到通知, (視使用的用戶端而定) 。
Visual Studio
從 Visual Studio 2019 16.3 版開始提供
Visual Studio會在索引標籤上 Installed
警告已淘汰套件的使用方式。如果存在) ,它會顯示套件的警告及其淘汰資訊 (包括已淘汰的原因,以及替代套件改用。
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 下載 |
熱門傳輸應用程式程式
- 檢閱 熱門傳輸需求。
- 電子郵件 account@nuget.org ,其中包含應傳輸其熱門性的已淘汰套件,以及應接收熱門傳輸的穩定套件清單 () 。
提交應用程式之後,我們會通知您應用程式的接受或拒絕 (,以及造成拒絕) 的準則。 我們可能需要詢問額外的識別問題以確認擁有者身分識別。
熱門傳輸需求
- 舊版套件和新套件必須共用所有擁有者。
- 新的套件必須與命名和函式 (中的舊版套件清楚相關,也就是演進或新一代) 。
- 舊版套件的所有版本都必須已被取代,並指向接收傳輸的新套件。
- 熱門傳輸不得造成NuGet使用者混淆,或造成NuGet搜尋體驗的混淆。
- 新的套件必須具有穩定版本。
- 舊版套件不得從另一個已被取代的套件接收熱門傳輸。
進階熱門傳輸案例
套件匯總
我可以轉移多個已淘汰套件的熱門度,以偏好單一新套件。 例如,假設我有 3 個套件:
- 我的第一個已被取代的舊版套件,
Contoso.Legacy1
- 我第二個已被取代的舊版套件,
Contoso.Legacy2
- 我的新合併套件,
Contoso.Latest
在淘汰 Contoso.Legacy1
和 Contoso.Legacy2
之後,我可以套用 以將其熱門度轉移至 Contoso.Latest
。
套件分割
已淘汰的套件熱門度可以傳輸至最多 5 個較新的套件,並加以分割。 如果已淘汰套件的功能已分割成多個新套件,這非常有用。 例如,假設我有 3 個套件:
- 我已被取代的舊版套件,
Contoso.Legacy
- 我的第一個新套件
Contoso.Web
- 我的第二個新套件
Contoso.Cloud
Contoso.Legacy
同時包含 Web 和雲端功能,但我決定將該功能分成不同的套件,以供新一代使用。 在 Contoso.Legacy
淘汰 之後,我可以套用 將它的熱門度同時傳送至 Contoso.Web
和 Contoso.Cloud
。
警告
傳輸的熱門程度將會平均分割到所有新套件之間。 因此,建議您盡可能將已被取代的套件熱門程度傳輸至最少的套件。
熱門傳輸鏈結
如果已被取代的套件已經從另一個已被取代的套件收到熱門度,就無法傳輸其熱門性。 例如,假設我有 3 個套件:
- 我已被取代的舊版套件,
Contoso.First
- 我已被取代的舊版套件,
Contoso.Second
- 我的新套件
Contoso.Latest
如果 Contoso.First
將其熱門度轉移至 Contoso.Second,
,則 Contoso.Second
無法將其熱門度轉移至 Contoso.Latest
。 相反地,我們建議根據套件匯總案例,將 和 Contoso.Second
的 Contoso.First
受歡迎度轉移至 Contoso.Latest
。