Автор статьи: Рустем Галиев
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)
s207883
17.04.2023 14:52+3Ждём серию гайдов по установке visual studio и включению темной темы
Myxach
17.04.2023 14:52-2Я Реально слышал от некоторых людей что такие главы в книгах самые полезные o_O
s207883
17.04.2023 14:52+1В плане vs можно отчасти согласиться. Десятки галочек и конфигураций могут сбить с толку, а выбери все - поставишь себе монстра на 80 гигов.
timoxa_dev
17.04.2023 14:52Вообще мелкомягкие неплохо сделали VS Installer, где сотни галочек поделены на десятки групп.
Все равно рано или поздно придется осознать за что отвечают те или иные компоненты
Myxach
17.04.2023 14:52ну там все же легко настраивается что тебе нужно. Впрочем 80гб...это даже не средний объем который может вс занимать
Kodzo
17.04.2023 14:52-2тоже хотел бота научить писать статьи по материалам с сайта Microsoft.Learn, получалось похоже. но вы опередили. /s
Demos7787
17.04.2023 14:52Не устанавливайте Newtonsoft.Json. Сейчас System.Text.Json намного лучше, даже в плане оптимизации.
SGordon123
Хочу опубликовать хелло ворлд под линь, лезут ошибки , не подскажете ЧЯДНТ?
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).