Поделиться через


Пакеты, подлежащие устареванию

Вы можете отключить пакет, если вы больше не поддерживаете пакет или хотите поощрять потребителей пакета перейти к другому пакету.

Деприкация пакета отличается от его удаления из списка, как описано ниже:

  • Отмена списка пакетов предотвращает обнаружение, так как оно скрыто в результатах поиска.
  • Пометка пакета как устаревающего позволяет существующим пользователям пакета узнать, установлен ли он или используется в их проектах. Он также позволяет им узнать причину устаревания и рекомендуемый альтернативный пакет, указанный вами (издателем пакета). Депрекация пакета не означает его удаление из списка.

Как издатель, вы можете как скрыть пакеты, так и отметить их как устаревшие.

Рабочий процесс депрекации

  1. Чтобы объявить пакет устаревшим, перейдите в раздел "Управление пакетами" и выберите "Устаревание".

    Перейти к устаревшей опции пакета

  2. Выберите версию, которую вы хотите снять с поддержки. Если вы хотите отключить все версии, выберите вариант "Выбрать все версии ".

    Выбор версий пакетов для отмены

  3. Выберите причину нерекомендуемого использования. Если пакет больше не поддерживается, выберите вариант устаревший. Если у конкретной версии имеется критическая ошибка, выберите параметр "Критически важные ошибки ". По какой-либо другой причине нажмите кнопку "Другой". Вы всегда можете указать альтернативный рекомендуемый пакет (и версию) и пользовательское сообщение владельцам.

    Выберите причины альтернативной рекомендации по пакету и пользовательское сообщение

Замечание

Настраиваемое сообщение отображается только на nuget.org, но не через клиентские приложения. В настоящее время такие клиенты, как dotnet.exe и диспетчер пакетов NuGet, не отображают настраиваемое сообщение.

Клиентский интерфейс для устаревших пакетов

После того как пакет не рекомендуется, его потребители получают уведомления об этом следующим образом (в зависимости от используемого клиента).

Visual Studio

Доступно начиная с Visual Studio 2019 версии 16.3

Visual Studio предупреждает об использовании устаревшего пакета на вкладке Installed. Будет отображаться предупреждение для пакета и информация об устаревании (включая причину его устаревания и альтернативный пакет для использования, при наличии).

Устаревшие пакеты на установленной вкладке Диспетчера пакетов Visual Studio

dotnet.exe

Доступно начиная с пакета SDK для .NET 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 миллионами загрузок
  • Мой последний пакет с 5 загрузками Contoso.Latest

NuGet.org предпочитает результаты поиска с более высокими загрузками и популярностью. Учитывая запрос поиска Contoso, мой устаревший пакет Contoso.Legacy , скорее всего, будет рангом выше последнего пакета Contoso.Latest в результатах поиска.

Чтобы решить эту проблему, я могу запросить передачу популярности моего устаревшего пакета на мой последний пакет. Это приведет к тому, что Contoso.Latest будет выше в результатах поиска, в то время как Contoso.Legacy будет понижаться. Влияют только внутренние оценки популярности пакетов, фактическое количество загрузки для каждого пакета не будет затронуты.

Замечание

Перенос популярности может значительно усложнить потребителям найти устаревший пакет.

См. таблицу ниже, чтобы получить конкретную идею о том, как передача популярности может повлиять на рейтинг поиска для запроса Contoso:

Ранжирование поиска До передачи популярности После переноса популярности
1 Contoso.Legacy, 3 миллиона загрузок Contoso.Latest, 5 скачиваний
2 Contoso.Scanner, 2 млн загрузок Contoso.Scanner, 2 млн загрузок
3 Contoso.Core, 1.5 млн скачиваний Количество загрузок Contoso.Core: 1,5 млн
4 Contoso.UI, 1 млн скачиваний Contoso.UI, 1 млн загрузок
... ... ...
20 Contoso.Latest, 5 скачиваний Contoso.Legacy, 3 миллиона загрузок

Процесс передачи популярности приложения

  1. Ознакомьтесь с параметрами передачи популярности.
  2. Отправьте электронное письмо на [email protected], указав устаревший пакет, популярность которого должна быть передана, и список стабильных пакетов, которым должна быть передана популярность.

После отправки приложения мы уведомим вас о принятии или отклонении вашего приложения (с критериями, которые вызвали отклонение). Возможно, нам потребуется задать дополнительные вопросы, чтобы подтвердить удостоверение владельца.

Требования к передаче популярности

  • Устаревшие пакеты и новые пакеты должны иметь общих владельцев.
  • Новые пакеты должны быть четко связаны с устаревшими пакетами в названиях и функциях, т. е. как эволюция или следующее поколение.
  • Все версии устаревших пакетов должны быть объявлены устаревшими и указывать на новые пакеты, на которые передаются функции.
  • Передача популярности не должна вызывать путаницу для пользователей NuGet или ухудшать работу поиска NuGet.
  • Новые пакеты должны иметь стабильную версию.
  • Устаревший пакет не должен получать передачу популярности от другого устаревшего пакета.

Расширенные сценарии передачи популярности

Консолидация пакетов

Я могу передать популярность нескольких устаревших пакетов в пользу одного нового пакета. Например, предположим, что у меня есть 3 пакета:

  • Мой первый устаревший пакет, Contoso.Legacy1
  • Мой второй устаревший пакет, Contoso.Legacy2
  • Мой новый консолидированный пакет, Contoso.Latest

После того, как я перевожу в разряд устаревших Contoso.Legacy1 и Contoso.Legacy2, я могу запросить перенос их популярности на Contoso.Latest.

Разделение пакетов

Популярность устаревшего пакета может быть передана и распределена между до пяти более новыми пакетами. Это полезно, если функциональные возможности устаревшего пакета были разделены между несколькими новыми пакетами. Например, предположим, что у меня есть 3 пакета:

  • Мой устаревший пакет, Contoso.Legacy
  • Мой первый новый пакет, Contoso.Web
  • Мой второй новый пакет, Contoso.Cloud

Contoso.Legacy включает как веб-, так и облачные функции, но я решил разделить эту функцию на разные пакеты для следующего поколения. После того как я объявлю 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, как в сценарии консолидации пакетов.