$ sudo teach IT
Модуль 10 · Полезные модули

Урок 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

Самый простой способ установить пакет — через терминал:

Терминал · Установка NuGet-пакета
# Установка последней версии
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 появляется новая запись:

XML · Файл .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) и напишем программу:

Терминал · Установка Newtonsoft.Json
dotnet new console -n JsonDemo
cd JsonDemo
dotnet add package Newtonsoft.Json
C# · Работа с JSON через Newtonsoft
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
📌

Что важно запомнить

1️⃣
NuGet — менеджер пакетов .NET. Аналог pip для Python.
2️⃣
dotnet add package — установка пакета. dotnet remove package — удаление.
3️⃣
dotnet restore — восстановление всех зависимостей по .csproj. Нужно после клонирования проекта.
4️⃣
nuget.org — репозиторий пакетов. Сотни тысяч бесплатных библиотек.
5️⃣
Debug vs Release: Debug — для разработки, Release — для продакшена. Переключай через -c Release.

Тест: 10.5: Пакетный менеджер NuGet

3 вопроса

NuGet

Premium