如果您不再维护包,或者希望鼓励使用者迁移到其他包,可以将包标记为弃用。
包弃用不同于取消显示您的包,如下所示:
- 取消列出 包会阻止其发现,因为它隐藏在搜索结果中。
- 弃用 一个包可使其当前使用者了解是否在项目中安装或使用了该包。 它还让他们知道弃用的原因,以及你指定的备用推荐包(包发布者)。 弃用某个包并不会将其从列表中取消显示。
作为发布者,可以选择取消列出和弃用包。
弃用流程
若要弃用包,请转到 “管理包 ”并选择“ 弃用” :
选择要弃用的版本。 如果要弃用所有版本,请选择 “选择所有版本 ”选项。
选择弃用的原因。 如果包已不再维护,请选择 “遗留” 选项。 如果特定版本存在关键 bug,请选择 “具有关键 bug” 选项。 出于任何其他原因,请选择 “其他”。 您始终可以为软件包(及其版本)指定备用推荐选项,并向所有者提供自定义消息。
注释
自定义消息仅在 nuget.org 上显示,但不显示在客户端上。 目前,诸如 dotnet.exe 和 NuGet 包管理器之类的客户端不会显示自定义消息。
已弃用包的客户端体验
一旦一个软件包被弃用,其用户会通过以下方式接到通知(具体取决于所使用的客户端)。
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下载量为 300 万 - 我的最新包
Contoso.Latest已经被下载了 5 次。
NuGet.org 更倾向于具有较高下载/普及性的搜索结果。 鉴于搜索查询“Contoso”,我已废弃的包 Contoso.Legacy 在搜索结果中可能会排在我的最新包 Contoso.Latest 之上。
若要解决此问题,我可以申请将已弃用的遗留包的受欢迎程度转移到我的最新包。 这会导致 Contoso.Latest 搜索结果排名较高,而 Contoso.Legacy 排名较低。 只有包的内部受欢迎程度分数受到影响,每个包的实际下载计数不会受到影响。
注释
人气转移可能会让消费者更难找到旧版本软件包。
请参阅下表,了解人气转移如何影响查询“Contoso”的搜索结果排名:
| 搜索排名 | 在流行度转换之前 | 流行度转移后 |
|---|---|---|
| 1 | Contoso.Legacy,300万次下载 | 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,300万次下载 |
人气转移应用流程
- 查看 流行度转移要求。
- 发送电子邮件 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.First和Contoso.Second的受欢迎程度转移到Contoso.Latest。