Урок 10.5 — Пакетный менеджер NuGet
NuGet — менеджер пакетов .NET. Установка библиотек, управление зависимостями и сборка проекта.
Никто не пишет каждую программу с нуля. Хочешь работать с JSON? Есть библиотека. Хочешь отправить HTTP-запрос? Есть библиотека. Хочешь нарисовать график? Тоже есть библиотека. NuGet — это менеджер пакетов для .NET, который позволяет устанавливать готовые библиотеки одной командой.
Что такое NuGet
NuGet — это менеджер пакетов для экосистемы .NET. Аналог pip в Python, npm в JavaScript, cargo в Rust. Он позволяет:
- Находить готовые библиотеки на сайте nuget.org
- Устанавливать их одной командой в проект
- Автоматически подтягивать зависимости (библиотеки, от которых зависит устанавливаемая)
- Обновлять и удалять пакеты
На nuget.org находятся сотни тысяч пакетов: от парсеров JSON до оркестраторов микросервисов. Всё бесплатно и с открытым исходным кодом.
Установка пакета: dotnet add package
Самый простой способ установить пакет — через терминал:
# Установка последней версии
dotnet add package Newtonsoft.Json
# Установка конкретной версии
dotnet add package Newtonsoft.Json --version 13.0.3
# Установка пакета для работы с HTTP
dotnet add package RestSharp
# Парсинг Excel-файлов
dotnet add package EPPlus
# Работа с CSV
dotnet add package CsvHelper
После установки в файле .csproj появляется новая запись:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
</Project>
Поиск и управление пакетами
# Список установленных пакетов
dotnet list package
# Поиск пакета на nuget.org (в браузере)
# https://www.nuget.org/packages/ИмяПакета
# Удаление пакета
dotnet remove package Newtonsoft.Json
# Восстановление всех пакетов (после клонирования репозитория)
dotnet restore
# Просмотр устаревших пакетов
dotnet list package --outdated
Восстановление пакетов (dotnet restore) — это ключевая команда. Когда ты клонируешь чужой проект с GitHub, у тебя нет самих DLL-библиотек. Вместо них есть только .csproj-файл со списком зависимостей. Команда dotnet restore скачивает все нужные пакеты с nuget.org.
Практический пример: работа с JSON
Установим пакет Newtonsoft.Json (самая популярная .NET-библиотека для JSON) и напишем программу:
dotnet new console -n JsonDemo
cd JsonDemo
dotnet add package Newtonsoft.Json
using System;
using Newtonsoft.Json;
class Program
{
static void Main()
{
// Создаём объект
var person = new Person
{
Name = "Иван",
Age = 30,
IsStudent = false
};
// Сериализация: объект → JSON-строка
string json = JsonConvert.SerializeObject(person, Formatting.Indented);
Console.WriteLine("JSON:");
Console.WriteLine(json);
// Десериализация: JSON-строка → объект
string inputJson = @"{
'Name': 'Мария',
'Age': 25,
'IsStudent': true
}";
Person deserialized = JsonConvert.DeserializeObject(inputJson);
Console.WriteLine($"\nИмя: {deserialized.Name}, Возраст: {deserialized.Age}");
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public bool IsStudent { get; set; }
}
Debug vs Release — сборка проекта
У .NET проектов есть два режима сборки:
✅ Debug (по умолчанию)
Режим разработки. Код не оптимизирован, но можно ставить точки остановки, смотреть значения переменных, пошагово выполнять. Используй во время написания кода.
🚀 Release
Готовая к публикации версия. Код оптимизирован, работает быстрее, но отладка недоступна. Используй для передачи заказчику или деплоя на сервер.
# Сборка в Debug (по умолчанию)
dotnet build
# Сборка в Release
dotnet build -c Release
# Публикация (создание exe для распространения)
dotnet publish -c Release -r win-x64 # для Windows
dotnet publish -c Release -r osx-x64 # для macOS
dotnet publish -c Release -r linux-x64 # для Linux
Что важно запомнить
-c Release.Тест: 10.5: Пакетный менеджер NuGet
3 вопроса