Поиск и оценка пакетов NuGet для проекта

При запуске проекта .NET или выявлении функциональной необходимости в приложении или службе часто можно установить существующие пакеты NuGet, чтобы сэкономить время и проблемы при создании собственных пакетов. Существующие пакеты могут поступать из общедоступной коллекции nuget.org или из частных источников, предоставляемых вашей организацией или другой стороной.

Поиск пакетов

Пакеты можно найти непосредственно в https://nuget.org/packagesvisual Studio диспетчер пакетов пользовательском интерфейсе или консоли диспетчер пакетов с nuget.org в качестве источника. Все пакеты из nuget.org регулярно сканируются для вирусов.

В nuget.org/packages вы увидите список пакетов NuGet с наиболее популярными пакетами во всех проектах .NET, перечисленных в первую очередь. Некоторые из этих пакетов могут быть полезны для ваших проектов.

Screenshot that shows the default view of nuget.org/packages with the most popular packages at the top.

Чтобы найти пакет, введите имя пакета или условия поиска в поле поиска в верхней части страницы. Для фильтрации поиска можно использовать расширенный синтаксис поиска.

расширенная фильтрация и сортировка данных;

В nuget.org/packages можно уточнить результаты поиска, используя расширенные параметры фильтрации и сортировки.

Screenshot that shows the filtering and sorting options on nuget.org.

Используйте фильтры Платформ для отображения пакетов, предназначенных для конкретных платформ .NET (Дополнительные сведения см. в разделе "Целевые платформы").

  • Выбор одного из проверка бок поколения платформы .NET отфильтровывает результаты поиска в пакеты, совместимые с любым из отдельных целевых платформ в этом поколении. Например, выбор .NET вернет пакеты, совместимые с любой из современных платформ .NET, включая net5.0 через net8.0.

    Screenshot that shows the Framework filters on nuget.org.

  • Расширение одного из этих поколений платформы со стрелками справа покажет вам отдельные моникеры целевой платформы (TFM), по которым можно фильтровать результаты. Например, выбор net5.0 вернет пакеты, совместимые с платформой .NET 5.0.

  • По умолчанию пакеты фильтруются по расширенному списку вычисляемых совместимых платформ. Если вы хотите отфильтровать пакеты исключительно по платформам активов, которые они явно нацелены, отмените выбор платформ, совместимых с Include, проверка box.

  • Объединение нескольких фильтров платформ будет отображать результаты поиска, соответствующие всем выбранным фильтрам, т. е. пакеты, которые попадают на пересечение выбранных элементов. Например, выбор netcoreapp3.1 и net45 совместное отображение пакетов, предназначенных как для .NET Core 3.1, так и для платформа .NET Framework 4.5. Выбор .NET Core проверка поколения платформы и net45 проверка box вместе вернет пакеты, предназначенные для "платформа .NET Framework 4.5", и по крайней мере один из TFM .NET Core (netcoreapp1.0черезnetcoreapp3.1).

    • Кроме того, если вы хотите просмотреть пакеты, соответствующие любому из фильтров платформы, выберите переключатель "Любой " в параметре "Режим фильтра платформы". Теперь выберите netcoreapp3.1 и net5.0 отобразит пакеты, предназначенные для .NET Core 3.1 или .NET 5.0. Выбор netcoreapp3.1 проверка box и .NET проверка box платформы вместе вернет пакеты, предназначенные для .NET Core 3.1 или любого из них. TFM NET (net5.0 через net8.0).
  • Дополнительные сведения о том, как оценить поддерживаемые платформы пакета и его совместимость с проектом.

Используйте фильтр типа пакета для отображения пакетов определенного типа:

По умолчанию NuGet перечисляет все версии пакетов, включая предварительные и бета-версии. В разделе "Параметры" отмените флажок "Включить предварительную версию" проверка box, чтобы вывести список только стабильных версий пакета.

Чтобы применить изменения, нажмите кнопку "Применить". Чтобы вернуться к значениям по умолчанию, нажмите кнопку "Сброс".

Используйте раскрывающийся список сортировки по правому верхнему краю страницы, чтобы отсортировать список по нескольким критериям:

  • Релевантность — это значение по умолчанию и сортирует результаты в соответствии с внутренним алгоритмом оценки.
  • Скачивает результаты поиска по общему количеству скачиваемых файлов в порядке убывания.
  • Недавно обновленные результаты поиска сортируются по дате создания последней версии пакета в хронологическом порядке.

Синтаксис поиска

Запросы поиска пакетов по nuget.org из интерфейса командной строки NuGet и из Visual Studio используют один и тот же синтаксис. Другие источники пакетов, такие как Azure Artifacts или репозиторий пакетов GitHub, могут использовать другой синтаксис или не поддерживать расширенную фильтрацию.

  • Вы можете выполнить поиск по пакету id, titleauthorversionpackageiddescriptionsummarytagsили owner свойства с помощью синтаксиса.<property>:<term>

  • Поиск применяется к ключевое слово и описаниям и не учитывает регистр. Например, следующие строки выполняют поиск по свойству id строки nuget.core:

    id:NuGet.Core
    ID:nuget.core
    Id:NUGET.CORE

  • id Выполняет поиск по подстрокам свойства, а также packageidowner использует точные совпадения без учета регистра. Например:

    PackageId:jquery выполняет поиск точного идентификатора jqueryпакета.
    Id:jquery выполняет поиск всех идентификаторов пакетов, содержащих строку jquery.

  • Одновременно можно найти несколько значений или свойств. Например:

    id:jquery id:ui выполняет поиск нескольких терминов в свойстве id .
    id:jquery tags:validation выполняет поиск нескольких свойств.

  • Поиск игнорирует неподдерживаемые свойства, поэтому invalid:jquery ui он совпадает с поиском uiи invalid:jquery возвращает все пакеты.

Определение поддерживаемых платформ

NuGet устанавливает пакет в проект, только если поддерживаемые платформы .NET пакета включают целевые платформы проекта. Если пакет несовместим, NuGet выдает ошибку.

Существует несколько способов определить платформы, поддерживаемые пакетом:

  • На странице поиска поддерживаемые платформы пакета будут отображаться в виде значков под идентификатором пакета. Эти значки отображают самые низкие поддерживаемые версии платформы из .NET, .NET Core, .NET Standard и платформа .NET Framework поколений. Пакет будет совместим с любой версией платформы, равной или выше, чем показанная версия индикатора событий.

    Индикаторы "темно-синий" представляют явно целевые платформы, а индикаторы "светло-синий" представляют вычисляемые совместимые платформы.

    Щелкнув значок, вы перейдете на страницу сведений о пакете на nuget.org. Вкладка Frameworks на странице пакета отобразит полный список поддерживаемых платформ.

    Screenshot of the Framework badges on nuget.org's search page.

  • На странице пакета в nuget.org поддерживаемые платформы отображаются под идентификатором пакета и на вкладке Frameworks , но не все пакеты отображают поддерживаемые платформы.

    Screenshot of the Frameworks UI and tab on the package page at nuget.org.

  • Скачайте пакет вручную, выбрав "Скачать пакет " в разделе ". Измените расширение файла скачаемого пакета из NUPKG на .zip, откройте папку .zip и проверьте ее папку lib. Существуют вложенные папки для каждой поддерживаемой платформы, каждая из которых называется с моникером целевой платформы (TFM). Дополнительные сведения см. в разделе "Целевые платформы". Если в библиотеке lib нет вложенных папок и есть только одна библиотека DLL, попробуйте установить пакет, чтобы обнаружить ее совместимость.

  • Попробуйте установить пакет в проект с помощью install-Package в консоли диспетчер пакетов Visual Studio. Если пакет несовместим, выходные данные консоли отображают поддерживаемые платформы пакета.

Предварительные версии пакетов

Многие авторы пакетов предоставляют предварительные версии и бета-версии, так как они продолжают улучшать и искать отзывы о последних редакциях. По умолчанию nuget.org отображаются пакеты предварительного выпуска в списке пакетов и результатах поиска.

Чтобы вывести список и поиск только стабильных выпусков:

  • В nuget.org отключите флажок "Включить предварительное проверка" на панели расширенного поиска.
  • В пользовательском интерфейсе NuGet Visual Studio диспетчер пакетов отключите поле "Включить предварительную версию" проверка box рядом с полем поиска.

Средства командной строки NuGet и dotnet CLI диспетчер пакетов Visual Studio по умолчанию не включают предварительные версии. Чтобы включить предварительные версии, выполните следующие действия.

  • В консоли диспетчер пакетов используйте переключатель -IncludePrerelease с Find-Packageкомандами , а Sync-PackageInstall-PackageGet-Packageтакже Update-Package командами. Дополнительные сведения см. в справочнике по PowerShell.

  • Для интерфейса командной строки NuGet используйте -prerelease переключатель с installкомандами , deleteupdateа также mirror командами. Дополнительные сведения см. в справочнике по Интерфейсу командной строки NuGet.

  • Для dotnet CLI укажите предварительную версию с аргументом -v . Дополнительные сведения см. в справочнике по добавлению пакета dotnet.

Собственные пакеты C++

Проекты Visual Studio C++ могут использовать собственные пакеты NuGet C++. Установка этих пакетов включает команду контекстного меню "Управление пакетами NuGet", предоставляет целевую платформу native и обеспечивает интеграцию MSBuild.

Чтобы найти собственные пакеты в nuget.org/packages, выполните поиск с помощью tag:native. Такие пакеты обычно предоставляют файлы .targets и .props, которые NuGet автоматически импортирует при добавлении пакетов.

Оценка пакетов

Лучший способ оценить полезность пакета — попробовать его. Вы принимаете зависимость от пакета при его использовании, поэтому необходимо убедиться, что он надежный и надежный. Однако установка пакета и непосредственное тестирование его занимает много времени. Вы можете узнать больше о качестве пакета, используя сведения на странице пакета на nuget.org/packages.

  • Маркер зарезервированной проверка префикс рядом с идентификатором пакета в списке пакетов и страницей пакета означает, что владельцы пакетов подали заявку и получили префикс зарезервированного идентификатора пакета. Чтобы соответствовать критериям резервирования префикса идентификатора, владельцы пакетов должны четко идентифицировать себя и их пакеты.

    Screenshot that shows Prefix Reserved on a package's page.

  • Скачивание в правом столбце страницы пакета показывает общее число, текущую версию и средние загрузки в день. Большое число указывает, что пакет доказал себя среди многих разработчиков.

    Screenshot that shows Download statistics on a package's page.

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

  • На вкладке "Использовано по " на странице пакета отображаются пять самых популярных пакетов nuget.org и репозиториев GitHub, которые зависят от этого пакета. Пакеты и репозитории, зависящие от этого пакета, называются зависимыми. Зависимые пакеты и репозитории можно рассматривать как одобрение этого пакета, так как они решили доверять и зависеть от него.

    Screenshot that shows the Used By list.

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

    Зависимый пакет версии Зависимый пакет, указанный как зависимый?
    Версия 1.0.0
    Версия 1.1.0 (последняя стабильная версия) зависит от этого пакета.
    v1.2.0 (предварительная)
    TRUE, последняя стабильная версия зависит от этого пакета
    Версия 1.0.0 зависит от этого пакета
    v1.1.0 (последняя стабильная)
    v1.2.0 (предварительная)
    False, последняя стабильная версия не зависит от этого пакета.
    Версия 1.0.0 зависит от этого пакета
    v1.1.0 (последняя стабильная)
    Версия 1.2.0-preview зависит от этого пакета
    False, последняя стабильная версия не зависит от этого пакета.

    Количество звезд для репозитория GitHub указывает на популярность пользователей GitHub. Дополнительные сведения о звезде GitHub и системе ранжирования репозитория см. в разделе "О звездах".

    Примечание.

    Раздел "Использованный по " автоматически создается периодически, без проверки человека и исключительно для информационных целей.

  • На вкладке "Версии" на странице пакета отображаются версии, загрузки, дата последнего обновления и серьезные уязвимости версий пакетов. Установленная версия не должна иметь уязвимостей с высоким уровнем серьезности. Хорошо поддерживаемый пакет имеет последние обновления и длинную историю версий. У небрежных пакетов есть несколько и давних обновлений.

    Screenshot that shows the Versions list.

Правый столбец страницы пакета содержит другие информационные ссылки:

Screenshot that shows the right column of the package page.

  • Выберите веб-сайт Project, если он доступен, чтобы узнать, какие варианты поддержки предоставляет автор. Проект с выделенным сайтом обычно хорошо поддерживается.

  • Выберите исходный репозиторий, чтобы перейти к репозиторию исходного кода Git для пакета. Многие авторы поддерживают свои пакеты в репозиториях с открытым исходным кодом, поэтому пользователи могут напрямую вносить исправления ошибок и улучшения функций. Журнал вкладов пакета является хорошим показателем того, сколько разработчиков активно участвует.

  • Выберите <лицензию типа> лицензии , чтобы просмотреть mit или другую лицензию пакета. Если пакет не указывает условия лицензии, обратитесь к владельцу пакета.

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

Получение сведений о лицензии

Некоторые клиенты NuGet и веб-каналы NuGet могут не отображать сведения о лицензировании. Чтобы обеспечить обратную совместимость в таких случаях, URL-адрес лицензии указывает на этот документ о том, как получить сведения о лицензии.

Если выбрать URL-адрес лицензии для пакета, который будет добавлен на эту страницу, он подразумевает, что пакет содержит файл лицензии и:

  • Вы подключены к веб-каналу, который не знает, как интерпретировать и передавать сведения о лицензии клиенту или
  • Вы используете клиент, который не знает, как интерпретировать и читать сведения о лицензии, которые предоставляет веб-канал, или
  • Сочетание обоих этих сценариев.

Чтобы прочитать сведения в файле лицензии внутри пакета, выполните следующие действия.

  1. Скачайте пакет вручную и распакуйте его содержимое в папку.
  2. Откройте nuspec-файл в корне папки.
  3. <license> Проверьте тег, например<license type="file">license\license.txt</license>. В примере тега указывается, что файл лицензии называется license.txt и находится внутри вложенной папки, называемой лицензией.
  4. Перейдите к указанному расположению и откройте указанный файл.

Сведения о MSBuild, эквивалентном настройке лицензии в nuspec, см. в разделе "Упаковка выражения лицензии" или файла лицензии.

Следующие шаги