Автор статьи: Рустем Галиев

IBM Senior DevOps Engineer & Integration Architect. Официальный DevOps ментор и коуч в IBM

Привет Хабр! Сегодня поговорим про NuGet

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

  Мы научимся:

  • устанавливать пакет NuGet с помощью .NET CLI,

  • отображать список всех пакетов в проекте,

  • использовать ранее установленный пакет в проекте.

Установка

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

Мы собираемся установить очень популярный пакет Newtonsoft.Json. Он включает в себя множество функций, облегчающих разработчикам работу с данными в формате JSON. Устанавливаем пакет, выполнив в терминале следующую команду:

dotnet add package Newtonsoft.Json

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

Откроем файлmy-app.csproj, чтобы увидеть ссылку, которая была добавлена ​​для установленного нами пакета Newtonsoft.Json. Файл проекта представляет собой XML-файл, и ссылка на пакет появится внутри элемента с именем <ItemGroup>.

Сейчас наш проект содержит ссылку только на один пакет NuGet. Однако проекты нередко ссылаются на десятки пакетов. .NET CLI также упрощает просмотр списка всех пакетов, на которые есть ссылки в проекте. Мы запускаем следующую команду в терминале, чтобы увидеть список пакетов в текущем проекте:

dotnet list package

Вы должны увидеть Newtonsoft.Json в списке пакетов верхнего уровня. Теперь, когда мы успешно установили пакет, будем использовать его на следующем шаге для вывода некоторых данных объекта на консоль в формате JSON.

Как только в проекте будет установлен пакет NuGet, мы сможем использовать его так же, как и любую другую ссылку на проект.

Хотя это и не обязательно, код будет менее подробным, если мы добавим оператор using для пространства имен, содержащего установленный нами пакет. Открываем файл Program.cs и добавляем следующую строку вверху файла:

using Newtonsoft.Json;

Это позволит нам обращаться к классам и методам в пакете, не добавляя к ним префикс Newtonsoft.Json.

Вызов метода в пакете

Структура проекта

Пример проекта уже включает класс Person со свойствами Name и Age. Файл Person.cs

public class Person
{
  public string? Name { get; set; }
  public int Age { get; set; }
}

Мы добавляем в файл следующий код в файл Program.cs, чтобы создать три новых экземпляра Person и добавить их в коллекцию с именем people:

var p1 = new Person() { Name = "Marie", Age = 30 };
var p2 = new Person() { Name = "Daniel", Age = 28 };
var p3 = new Person() { Name = "Lanier", Age = 25 };

var people = new List<Person>() { p1, p2, p3 };

Теперь мы воспользуемся методом пакета Newtonsoft.Json для преобразования коллекции объектов в строку JSON, которую можно легко сериализовать и передавать между приложениями. Мы добавляем следующий код (Program.cs) для выполнения преобразования и вывода новой строки в консоль:

string json = JsonConvert.SerializeObject(people, Formatting.Indented);
Console.WriteLine(json);

Обратите внимание, что вызов метода для такого пакета требует от вас понимания пакета и его возможностей. Многие популярные пакеты содержат документацию с подробным описанием того, как использовать объекты и возможности, которые они предоставляют. В качестве примера вы можете просмотреть документацию по вызову метода выше на веб-сайте Newtonsoft.Json.

Чтобы выполнить программу и увидеть вывод JSON, мы запускаем в терминале следующую команду:

dotnet run

Вы должны увидеть JSON-представление трех объектов в консоли.

Установка и использование пакетов NuGet в ваших приложениях — отличный способ повторно использовать код и сократить общее время разработки.

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

Комментарии (8)


  1. SGordon123
    17.04.2023 14:52
    -4

    Хочу опубликовать хелло ворлд под линь, лезут ошибки , не подскажете ЧЯДНТ?

    1>------ Сборка начата: проект: ConsoleApp1, Конфигурация: Release Any CPU ------
    2>------ Начало публикации: проект: ConsoleApp1, Конфигурация: Release Any CPU ------
    2>Определение проектов для восстановления...
    2>Не удалось найти пакет Microsoft.NETCore.App.Runtime.linux-x64. Пакеты с таким идентификатором отсутствуют в следующих источниках пакетов: Microsoft Visual Studio Offline Packages
    2>Не удалось найти пакет Microsoft.AspNetCore.App.Runtime.linux-x64. Пакеты с таким идентификатором отсутствуют в следующих источниках пакетов: Microsoft Visual Studio Offline Packages
    2>Не удалось найти пакет Microsoft.NETCore.App.Host.linux-x64. Пакеты с таким идентификатором отсутствуют в следующих источниках пакетов: Microsoft Visual Studio Offline Packages
    2>Не удалось восстановить D:\Work\C#\Linux\ConsoleApp1\ConsoleApp1\ConsoleApp1.csproj (за 609 ms).


  1. s207883
    17.04.2023 14:52
    +3

    Ждём серию гайдов по установке visual studio и включению темной темы


    1. Myxach
      17.04.2023 14:52
      -2

      Я Реально слышал от некоторых людей что такие главы в книгах самые полезные o_O


      1. s207883
        17.04.2023 14:52
        +1

        В плане vs можно отчасти согласиться. Десятки галочек и конфигураций могут сбить с толку, а выбери все - поставишь себе монстра на 80 гигов.


        1. timoxa_dev
          17.04.2023 14:52

          Вообще мелкомягкие неплохо сделали VS Installer, где сотни галочек поделены на десятки групп.

          Все равно рано или поздно придется осознать за что отвечают те или иные компоненты


        1. Myxach
          17.04.2023 14:52

          ну там все же легко настраивается что тебе нужно. Впрочем 80гб...это даже не средний объем который может вс занимать


  1. Kodzo
    17.04.2023 14:52
    -2

    тоже хотел бота научить писать статьи по материалам с сайта Microsoft.Learn, получалось похоже. но вы опередили. /s


  1. Demos7787
    17.04.2023 14:52

    Не устанавливайте Newtonsoft.Json. Сейчас System.Text.Json намного лучше, даже в плане оптимизации.