Добавление пакетов в проект .NET

Завершено

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

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

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

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

Определение потребности в пакете

Как узнать, нужен ли для вашего проекта тот или иной пакет? Это сложный вопрос, ответ на который зависит от нескольких факторов:

  • Получение лучшего кода: спросите себя, имеете ли вы дело с задачей, например безопасностью, и пытаетесь реализовать проверку подлинности и авторизацию. Для защиты ваших данных и данных клиентов этот код очень важно написать правильно. Многие разработчики используют стандартные шаблоны и библиотеки. Эти библиотеки реализуют функции, которые, вероятно, всегда нужны, и проблемы исправляются по мере их возникновения. Используйте такие библиотеки, чтобы не создавать собственные. Скорее всего, вам не придется писать код, так как вам нужно учитывать так много пограничных вариантов.
  • Экономия времени: вы, вероятно, можете создавать большинство вещей самостоятельно, например служебные библиотеки или библиотеки компонентов пользовательского интерфейса, но требуется время. Даже если ваши результаты сравнимы с доступными, это не рекомендуется использовать ваше время для репликации работы.
  • Обслуживание: все библиотеки и приложения рано или поздно потребуют обслуживания. Обслуживание означает добавление новых функций, а также исправление ошибок. Хорошо ли использовать ваше время или время вашей команды для поддержания библиотеки или лучше позволить команде программного обеспечения с открытым исходным кодом справиться с ним?

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

Перед установкой библиотеки рекомендуется проверить ее зависимости. От результатов проверки будет зависеть то, следует ли использовать пакет. При выборе зависимости для проекта следует учитывать определенные факторы.

  • Размер: количество зависимостей может создать большой объем. Если у вас ограниченная пропускная способность или есть другие аппаратные ограничения, это может стать проблематичным.
  • Лицензирование. Необходимо убедиться, что лицензия, предоставленная библиотеке, охватывает предполагаемое использование, будь то коммерческое, личное или академическое.
  • Активное обслуживание: это может быть проблема, если пакет зависит от зависимости, которая не поддерживается. Зависимость может быть устарела или не обновлена в течение длительного времени.

Чтобы получить дополнительные сведения о пакете перед установкой, перейдите по адресу https://www.nuget.org/packages/<package name>. Этот URL-адрес позволяет получить подробную страницу пакета. Откройте раскрывающийся список Зависимости и посмотрите, от каких пакетов зависит его работа.

Количество указанных зависимостей может не показать всю картину. После загрузки пакета вы можете заметить, что у вас появилась зависимость, включающая десятки других пакетов. Почему так? У каждого пакета есть список зависимостей. Чтобы вы могли использовать тот или иной пакет, при выполнении команды dotnet add package <package name> все зависимости сканируются и скачиваются.

Установка пакета

Существует несколько способов устанавливать пакеты. В Visual Studio и Visual Studio для Mac имеется встроенная командная строка и графический пользовательский интерфейс для диспетчера пакетов. Вы можете вручную добавить ссылки на пакеты в файл проекта или установить их с помощью средства интерфейса командной строки (CLI), например Paket или .NET Core CLI.

Для этого модуля мы используем встроенный интерфейс командной строки .NET Core для установки пакетов. Вы можете добавить пакет в проект .NET, вызвав команду в терминале. Типичная команда установки выглядит следующим образом: dotnet add package <name of package> При выполнении команды add package программа командной строки подключается к глобальному реестру, извлекает пакет и сохраняет его в кэшированную папку, где его могут использовать все проекты.

После установки и сборки проекта ссылки добавляются в папки отладки или выпуска. Каталог проекта выглядит примерно так:

-| bin/
---| Debug/
------| net3.1
--------| <files included in the dependency>

Поиск пакета

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

Снимок экрана: NuGet.org со списком популярных пакетов.

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

  • Реестры. Примером может быть глобальный реестр, например реестр NuGet.org. Можно создавать свои собственные реестры, которые могут быть как частными, так и общедоступными. Такие службы, как GitHub и Azure DevOps, предоставляют частные реестры.
  • Файлы. Пакет можно установить из локальной папки. Установка из пакета распространена при попытке разработки собственных библиотек .NET и хотите протестировать пакет локально. Или, по какой-то причине вы не хотите использовать реестр.

Схема, иллюстрирующая связь между авторами пакетов, узлами пакетов и потребителями пакетов

Реестр NuGet и инструмент dotnet

При запуске dotnet add package <name of dependency>.NET переходит в глобальный реестр с именем NuGet.org реестра, расположенного https://nuget.org и ищет код для скачивания. На этой странице можно также просматривать пакеты, если открыть ее в браузере. У каждого пакета есть отдельный веб-сайт.

Снимок экрана: целевая страница для пакета NuGet.

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

Снимок экрана: сведения и метрики для пакета NuGet

Команды .NET

До сих пор вы узнали, как установить зависимости с помощью интерфейса командной строки .NET Core. Но это далеко не все, на что она способна.

.NET Core CLI содержит довольно много команд. Они позволяют выполнять различные задачи, такие как установка пакетов, разработка пакетов и инициализация проектов .NET. Знать все команды в деталях необязательно. В начале работы с .NET вы, скорее всего, будете использовать лишь небольшой набор команд. При расширении использования .NET можно использовать дополнительные команды из различных категорий.

Категории помогают запомнить назначение различных команд.

  • Управление зависимостями. Команды в этой категории охватывают установку, удаление, очистку после установки пакетов и обновления пакетов.
  • Запуск программ: средство .NET Core помогает управлять потоками в разработке приложений. Примеры потоков приложения включают проведение тестов, сборку кода или запуск команд миграции для обновления проектов.
  • Создание и публикация пакетов. Некоторые команды помогут вам выполнить такие задачи, как создание сжатого пакета и отправка пакета в реестр.

Чтобы получить полный список команд, введите в окне терминала команду dotnet --help.

Установка пакета

dotnet add package <dependency name> Используйте команду для установки нормальной зависимости, которая должна использоваться в рамках приложения.

Примечание.

Некоторые пакеты можно устанавливать глобально. Такие пакеты не предназначены для импорта в проект. В связи с этим многие глобальные пакеты представляют собой средства CLI или шаблоны. Эти глобальные средства можно установить из репозитория пакетов. Для установки средств используйте команду dotnet tool install <name of package>. Для установки шаблонов используйте команду dotnet new -i <name of package>.

После установки

Установленные пакеты перечислены в dependencies разделе файла .csproj . Чтобы узнать, какие именно пакеты находятся в папке, введите команду dotnet list package.

Project 'DotNetDependencies' has the following package references
   [net8.0]:
   Top-level Package      Requested   Resolved
   > Humanizer            2.7.9       2.7.9

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

dotnet list package --include-transitive

Включение транзитивных данных позволяет просматривать зависимости вместе со всеми установленными пакетами. При выполнении dotnet list package --include-transitiveвы можете получить следующие выходные данные:

Project 'DotNetDependencies' has the following package references
   [net8.0]:
   Top-level Package      Requested   Resolved
   > Humanizer            2.7.9       2.7.9

   Transitive Package               Resolved
   > Humanizer.Core                 2.7.9
   > Humanizer.Core.af              2.7.9
   > Humanizer.Core.ar              2.7.9
   > Humanizer.Core.bg              2.7.9
   > Humanizer.Core.bn-BD           2.7.9
   > Humanizer.Core.cs              2.7.9
   ...

Восстановить зависимости

При создании или клонировании проекта включенные зависимости не загружаются или не устанавливаются до сборки проекта. Можно вручную восстановить зависимости и средства для конкретного проекта, указанные в файле проекта, выполнив dotnet restore команду. В большинстве случаев использовать эту команду явно не требуется. При необходимости восстановление NuGet выполняется неявно при использовании таких команд, как new, build и run.

Очистка зависимостей

Рано или не поздно у вас возникнет ситуация, когда тот или иной пакет станет не нужен. Или вы можете понять, что установленный пакет не является нужным. Может быть, вы нашли тот, который выполняет задачу лучше. Какой бы ни была причина, зависимости, которые больше не используются, следует удалять. Это требуется для сохранения порядка. Кроме того, зависимости занимают место.

Чтобы удалить пакет из проекта, используйте remove команду, например: dotnet remove package <name of dependency> Эта команда удаляет пакет из файла проекта .csproj .