Ответ
NuGet — это стандартный и основной менеджер пакетов для экосистемы .NET. Он интегрирован в Visual Studio и .NET CLI, предоставляя централизованный механизм для управления зависимостями проекта (сторонними библиотеками, инструментами, шаблонами).
Основные функции NuGet:
- Установка пакетов: Загрузка библиотек из репозиториев (публичный nuget.org или приватные) и добавление их в проект.
- Управление зависимостями: Автоматическое разрешение и установка всех зависимостей пакета (транзитивные зависимости).
- Управление версиями: Позволяет указывать конкретные версии, диапазоны версий или использовать плавающие версии (например,
6.0.*). - Восстановление пакетов: Команда
restoreзагружает все зависимости, указанные в файлах проекта, что является ключевым шагом в CI/CD пайплайнах.
Как это работает на практике:
При добавлении пакета (например, Newtonsoft.Json) NuGet:
- Находит пакет в настроенных источниках.
- Скачивает его (
.nupkgфайл, который является ZIP-архивом с DLL, XML-документацией и метаданными). - Добавляет ссылку на пакет в файл проекта (
.csproj). - Пакеты обычно скачиваются в папку
~/.nuget/packages(глобальный кэш) и ссылаются оттуда.
Способы использования:
1. Через графический интерфейс Visual Studio:
Правый клик на проект -> "Управление пакетами NuGet..." -> Поиск -> Установка.
2. Через Консоль диспетчера пакетов (Package Manager Console) в VS:
# Установка конкретной версии
Install-Package Newtonsoft.Json -Version 13.0.3
# Обновление пакета до последней версии
Update-Package Newtonsoft.Json
3. Через .NET CLI (предпочтительно для скриптов и CI/CD):
# Добавление пакета в проект
dotnet add package Newtonsoft.Json
# Восстановление всех зависимостей
dotnet restore
# Устаревшие пакеты можно удалить
dotnet remove package Old.Package
4. Прямое редактирование файла .csproj:
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Serilog" Version="3.1.1" />
</ItemGroup>
</Project>
Ключевые файлы:
.csproj— содержит список зависимостей (<PackageReference>).nuget.config— файл конфигурации, определяющий источники пакетов, кэши и другие настройки.
Альтернативы/Дополнения: Для управления зависимостями на уровне решения (например, для согласованного обновления версий во многих проектах) используются инструменты вроде Central Package Management (CPM) или NuGet's Directory.Build.props.