Search code, repositories, users, issues, pull requests…
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Sign up
Последнее обновление: 12.11.2022
Вместо создания своих собственных библиотек и определения своего собственного функционала мы можем использовать уже ранее созданные другими разработчиками библиотеки и
добавить их свой проект. Для управления внешними библиотеками в виде отдельных пакетов Microsoft предоставляет специальный менеджер пакетов под названием Nuget.
Физически NuGet-пакет представляет единый архивный файл с расширением .nupkg, который содержит скомпилированный код в виде библиотек dll и других файлов, используемых в коде.
Также пакет включает некоторое описание в виде номера версии и вспомогательной информации.
Для упрощения работы с пакетами, их распространенния Microsoft организовал глобальный репозиторий пакетов в виде сервиса nuget.org. И если разработчик хочет поделиться
своими наработками, он может загрузить свой код в виде Nuget-пакета в этот репозиторий, а другие разработчики могут скачать этот пакет и использовать его в свой программе.
Посмотрим, как устанавливать Nuget-пакеты и использовать их в своем проекте. Прежде всего стоит отметить, что есть различные способы установки пакетов. В данном случае рассмотрим установку пакетов
с помощью .NET CLI и в Visual Studio.
Установка nuget-пакетов с помощью .NET CLI
Если мы компилируем приложение непосредственно с помощью .NET CLI без каких-нибудь сред разработки типа Visual Studio, то мы можем воспользоваться встроенными инструментами,
которые имеются в .NET SDK.
Для примера создадим с помощью .NET CLI новый проект консольного приложения:
Для примера возьмем такой популярный Nuget-пакет как Newtonsoft.Json, который предназначен для работы с кодом json. Для этого перейдем в терминале к расположению проекта и выполним команду:
dotnet add package Newtonsoft.Json
После команды dotnet add package
указывается имя пакета:
если после этого мы откроем файл конфигурации проекта с расширением csproj, то встретим там элемент
PackageReference, который представляет добавленный пакет
<ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> </ItemGroup>
Здесь мы видим атрибут Include
, который указывает на название пакета для включения в проект, и атрибут Version
— версию пакета.
Пакет добавили, теперь используем его. Для этого определим следующий код программы:
using Newtonsoft.Json; // подключаем пространство имен из пакета Newtonsoft.Json Person tom = new Person("Tom", 38); // сериализуем объект tom в код json string json = JsonConvert.SerializeObject(tom); Console.WriteLine(json); class Person { public string Name {get;set;} public int Age {get;set;} public Person(string name, int age) { Name = name; Age = age; } }
С помощью вызова статического метода JsonConvert.SerializeObject(tom)
сериализуем объект tom в код json и потом этот код выводим на консоль.
Запустим проект командой dotnet run
и посмотрим на результат программы:
Таким образом, мы установили в проект Nuget-пакет и использовали его функциональность в своей программе. Если впоследствии пакет станет не нужен,
то его можно удалить командой:
dotnet remove package Newtonsoft.Json
После команды dotnet remove package
указывается название удаляемого пакета.
Установка пакета в Visual Studio
Visual Studio обладает богатым функционалом в плане работы с nuget-пакетами. Так, возьмем также простейший проект консольного приложения и добавим в него тот же пакет
Newtonsoft.Json. Для этого нажмем правой кнопкой на название проекта и в контекстном меню выберем Manage NuGet Packages…:
Нам откроется встроенный менеджер пакетов Nuget:
Для упрощения поиска нужного пакета введем название пакета в поле поиска. После этого список пакетов обновится. И обычно первый пакет в этом списке тот, который нужен.
При необходимости в правой части мы можем посмотреть информацию о пакете.
Итак, нажмем на кнопку Install для его установки. Далее может отобразиться дополнительное окно для просмотра пакетов, которые непосредственно будут установлены:
После установки в структуре проекта появится узел Packages с установленным пакетом, и соответствующая запись будет внесена в файл конфигурации проекта:
И теперь мы также сможем использовать функциональность пакета в программе.
В качестве альтернативы для добавления пакетов можно использовать Package Manager Console.
Для этого в меню Visual Studio перейдем к пункту Tools -> NuGet Package Manager -> Package Manager Console. И в открывшемся внизу в
Visual Studio окне Package Manager Console введем команду:
Install-Package Newtonsoft.Json
Формат: после команды Install-Package
указывается название устанавливаемого пакета.
Обновлено 10.02.2022
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами разлочили флешку, которая выдавала ошибку диск защищен от записи. Идем далее и сегодня я хочу вам рассказать, что такое NuGet и как его установить или обновить в систему, расскажу про небольшой траблшутинг по нему. Уверен, что многие оценят данный материал и выскажутся о нем в комментариях под статьей или в телеграм канале. Давайте приступать.
Что такое NuGet?
Традиционный способ установки модуля в Windows — это найти его в Интернете, затем загрузить и установить. Но в Windows Server 2016 этот способ управления модулями на машине был полностью изменён. Теперь он поставляется с встроенным в Windows PowerShell модулем PowershellGet. PowershellGet поможет вам найти, скачать, установить и управлять модулями на машине.
PowershellGet работает с несколькими поставщиками. Эти поставщики — клиентские инструменты, которые подключаются к представленному источником репозиторию модуля. Наиболее важный работающий с Windows Server 2016 поставщик PowershellGet — это NuGet.
NuGet — официальный менеджер пакетов для .NET (Windows). Пакеты в основном представляют собой скомпилированную библиотеку с некоторыми описательными метаданными. NuGet — это важный инструмент для любой современной платформы разработки. Это механизм, с помощью которого разработчики могут создавать, совместно использовать код. Часто такой код объединяется в пакеты, которые содержат скомпилированный код вместе с другим содержимым, необходимым в проектах, использующих эти пакеты. Пакет NuGet содержит один ZIP-файл с расширением .nupkg , который состоит из скомпилированного кода (DLL) и такой информации, как номер версии пакета.
NuGet сам обрабатывает все промежуточные детали, например, если разработчик с кодом, который хочет поделиться, создает пакет и публикует его на общедоступном или частном узле. Затем потребители пакетов получают эти пакеты с подходящих хостов, добавляют их в свои проекты и, наконец, вызывают функциональность пакета в своем коде. Можно использовать код пакетов NuGet, разработанный организацией, поскольку он поддерживает частные узлы наряду с общедоступным узлом nugget.org. Пакеты NuGet также можно использовать удобным способом для факторизации кода, используя его в своих проектах. Nuget считается общедоступной единицей кода, но для него не требуются какие-либо специальные средства совместного использования.
Он обеспечивает возможность работы не только с модулями, но и с приложениями или пакетами. NuGet может работать с несколькими источниками, но PSGallery — наиболее простые и привилегированные источники репозитория для PowershellGet.
- NuGet предоставляет центральный репозиторий nuget.org с поддержкой частного хостинга.
- NuGet предоставляет разработчикам инструменты, необходимые для создания, публикации и использования пакетов.
- NuGet поддерживает справочный список пакетов, используемых в проекте, и возможность восстанавливать и обновлять эти пакеты из этого списка.
- Помимо этого, NuGet поддерживает все спецификации, связанные со структурой пакетов, например локализацией и ссылками на них. Nuget предоставляет множество API-интерфейсов для программной работы со всеми своими службами, а также предоставляет поддержку разработчикам, публикующим расширения Visual Studio.
- NuGet предоставляет кэш пакетов и глобальную папку для пакетов, чтобы упростить установку и процесс переустановки. Кэш будет полезен, если есть пакет, который уже находится на локальной машине.
NuGet помогает в общем графе зависимостей, что позволяет избежать множественных ссылок на разные версии одного и того же пакета. Некоторые служебные пакеты используются многими другими пакетами. Таким образом, у вас может быть больше ссылок на разные версии одного и того же пакета. Чтобы не добавлять в проект разные версии одного и того же пакета, NuGet определяет, какая версия может использоваться всеми потребителями. т.е. он решает проблемы зависимости в собственном проекте
Как установить последнюю версию nuget
Запустите PowerShell в режиме администратора и введите команду:
Install-PackageProvider -Name NuGet -Force
А теперь еще скачаем последнюю версию самой утилиты:
Start-BitsTransfer https://dist.nuget.org/win-x86-commandline/latest/nuget.exe $PsHome\Nuget.exe
Unblock-File $PsHome\Nuget.exe
Set-Alias nuget $PsHome\Nuget.exe
Закройте все окна PowerShell. Откройте и теперь мы имеем алиас nuget.
Просто о NET |
создано:
6/13/2011
|
опубликовано:
6/13/2011
|
обновлено:
11/16/2022
|
просмотров:
44347
| всего комментариев:
2
В статье показано как установить NuGet и что это такое. Показаны примеры управления пакетами NuGet. Достаточно подробно и с картинками.
Если не установлен NuGet
Что такое NuGet не буду подробно рассказывать, разве что пару строк:
Со страниц официального сайта
“NuGet is a Visual Studio extension that makes it easy to install and update open source libraries and tools in Visual Studio.”
А теперь на русском
“Nuget – это одно из расширение Visual Studio, которое позволяет с легкостью устанавливать, обновлять и удалять библиотеки (сборки), компоненты, инструменты.”
Если у Вас не установлен это замечательное расширения для Visual Studio, давайте установим. Запускаем студию, идем в меню: Tools –> Extention Manager. Откроется окно менеджера, в этом окне в левой части выберим Online Gallery, менеджер покажет список доспуных расширений. По идеи, Вы должны сразу увидеть Nuget Package Manager. Но если Вы не увидели его, напишите в строке поиска этого менеджера слово “nuget” и тогда точно перед Вами будет менеджер.
У меня на картинке NuGet Manager отмечен зеленой галкой, которая говорит, что расширение уже установлено. Если Вы нажмете кнопку Install, у Вас появится такой же зеленый значок.
Как установить пакет (способ 1 “Визуальный”)
Я создал просто консольное приложение (просто для демонстрации). В Solution Explorer правой кнопкой мыши нажимаем на Preferences и в меню выбираем пункт Add Library Package references. Этот пункт меню должен появиться после установки менеджера пакетов NuGet.
В открывшемся окне, также как и в менеджере расширений для Visual Studio, есть список доступных галерей (слева). Хочу напомнить, что можно получать пакеты как с официального сайта (NuGet official package source), так и папки на своем компьютере, так и с NuGet-сервера локальной сети.
Я в поиске написал свой ник и увидел список доступных пакетов, которые я сделал сам:
Допустим, что я хочу в своё консольное приложение добавить несколько классов и наполнить их данными, чтобы поэкспериментировать с LINQ. Я выберу пакет SampleData и нажму Install. После установки пакет отметился зеленой галкой, а в списке сборок проекта появилась сборка SampleData, которая содержит классы и данные для них:
static void Main(string[] args) { var people = SampleData.People.GetPeople(); foreach (SampleData.Person item in people) { Console.WriteLine(string.Format("User {0} {1} year old (gender {2})", item.Name, item.Age, item.Gender)); } }
Если запустить приложение, то я увижу
User Tom 44 year old (gender M) User Mary 22 year old (gender F) User Jane 28 year old (gender F) User Lex 51 year old (gender M) User Paul 23 year old (gender M) User Frank 32 year old (gender M) User Joe 30 year old (gender M) User John 25 year old (gender M) User Mark 14 year old (gender M) User Paula 12 year old (gender F) User Beth 18 year old (gender F) User Jack 31 year old (gender M) User Bob 13 year old (gender M) User Robert 12 year old (gender M) User Tony 10 year old (gender M) User Ray 35 year old (gender M) Для продолжения нажмите любую клавишу . . .
Как установить NuGet-пакет (способ 2 “Для продвинутых”)
Давайте теперь создадим другое приложение, пусть оно тоже будет консольное. Теперь будем устанавливать Implementation a simple IoC, этот пакет я сделал тоже сам и для себя (но можете тоже пользовать на здоровье). После установки Nuget Package Manager в меню Visual Studio появились новые пункты, например, Tools –> Library Package Manager –> Package Manager Console.
Открыв консоль можно писать команды для менеджера:
Обратите внимание, что выпадающее окно Package source позволяет выбрать конкретный источник пакетов или использовать все доступные.
Напишу-ка я команду для установки моего пакета с IoC:
Команда NuGetInstall-Package SimpleIoC
Результат работы:
PM> Install-Package SimpleIoC Successfully installed 'SimpleIoC 0.1.3'. Successfully added 'SimpleIoC 0.1.3' to ConsoleApplication2.
Пакет установлен. У меня в приложении появился файл SimpleIoC.cs, который является реализацией паттерна IoC (Инверсия в управлении). Кстати, в приложении появился еще одни новый файл packages.config, который, как раз, и содержит информацию об установленных пакетах. У меня в приложении он имеет теперь вид:
<?xml version="1.0" encoding="utf-8"?> <packages> <package id="SimpleIoC" version="0.1.3" /> </packages>
Ясно всё и понятно, что отображает этот файл.
Использование пакетов
Хочу отметить некоторую специфику в работе с пакетами. Дело в том, что пакеты это нечто иное, как просто файлы подгруженные к Вашему проекту с учетом некоторых параметров. Например, мой файл SimpleIoC.cs появляется в проекте с учетов namespace. Процесс подмены шаблона используется тот же, что использует Visual Studio, при создании нового проекта из шаблона (или файла из шаблона). Про свойства в таких шаблонах можно почитать хранилище знаний.
NuGet “умеет” добавлять и удалять сборки, файлы, папки, но при одном условии. Если папка, файл или сборка не поменяла название (содержание). Раз уж я установил пакет, то я могу его и удалить:
Команда NuGetUninstall-Package SimpleIoC
Результат предугадать не сложно:
PM> Uninstall-Package SimpleIoC Successfully removed 'SimpleIoC 0.1.3' from ConsoleApplication2. Successfully uninstalled 'SimpleIoC 0.1.3'.
Так как у меня больше нет установленных пакетов, файл packages.config исчез из проекта, впрочем как и файл SimpleIoC.cs.
А сейчас небольшой эксперимент. Установлю пакет заново. Теперь я изменю мой SimpleIoC.cs. Например, сделаю из него Singleton и перемещу его в папку Core. Вот теперь удаление пакета будет не таким как в прошлый раз. Сообщение выдано такое же, файл удален, но на самом деле нет – файл остался. Возможно сие поведение будет исправлено в будущих версиях NuGet.
Заключение
В заключение, приведу ссылки
-
Официальный сайт NuGet
-
Информация на поля и свойства, которые использует VS при подмене шаблонов
-
Проект NuGet на Codeplex
As far as I can tell, NuGet is meant to be installed as a Visual Studio extension:
http://docs.nuget.org/docs/start-here/installing-nuget
But what if I need NuGet on a machine that doesn’t have VS installed?
Specifically, I would like to install NuGet with a PowerShell script.
knocte
17.1k11 gold badges79 silver badges127 bronze badges
asked May 20, 2013 at 20:26
1
- Run Powershell with Admin rights
- Type the below PowerShell security protocol command for TLS12:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Mark Wragg
22.2k7 gold badges40 silver badges68 bronze badges
answered Apr 16, 2020 at 8:47
Syam KalladaSyam Kallada
1,2851 gold badge5 silver badges3 bronze badges
1
Here’s a short PowerShell script to do what you probably expect:
$sourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
$targetNugetExe = "$rootPath\nuget.exe"
Invoke-WebRequest $sourceNugetExe -OutFile $targetNugetExe
Set-Alias nuget $targetNugetExe -Scope Global -Verbose
Note that Invoke-WebRequest
cmdlet arrived with PowerShell v3.0. This article gives the idea.
Phobis
7,55410 gold badges48 silver badges76 bronze badges
answered Oct 17, 2014 at 8:43
Yan SklyarenkoYan Sklyarenko
31.6k24 gold badges104 silver badges140 bronze badges
2
This also seems to do it.
PS Example:
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
answered Jan 11, 2018 at 22:03
colej4586colej4586
4095 silver badges10 bronze badges
4
With PowerShell but without the need to create a script:
Invoke-WebRequest https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile Nuget.exe
answered Apr 2, 2020 at 6:20
knocteknocte
17.1k11 gold badges79 silver badges127 bronze badges
None of the above solutions worked for me, I found an article that explained the issue. The security protocols on the system were deprecated and therefore displayed an error message that no match was found for the ProviderPackage.
Here is a the basic steps for upgrading your security protocols:
Run both cmdlets to set .NET Framework strong cryptography registry keys. After that, restart PowerShell and check if the security protocol TLS 1.2 is added. As of last, install the PowerShellGet module.
The first cmdlet is to set strong cryptography on 64 bit .Net Framework (version 4 and above).
[PS] C:\>Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
1
[PS] C:\>Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
The second cmdlet is to set strong cryptography on 32 bit .Net Framework (version 4 and above).
[PS] C:\>Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
1
[PS] C:\>Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
Restart Powershell and check for supported security protocols.
[PS] C:\>[Net.ServicePointManager]::SecurityProtocol
Tls, Tls11, Tls12
1
2
[PS] C:\>[Net.ServicePointManager]::SecurityProtocol
Tls, Tls11, Tls12
Run the command Install-Module PowershellGet -Force and press Y to install NuGet provider, follow with Enter.
[PS] C:\>Install-Module PowershellGet -Force
NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\administrator.EXOIP\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install
and import the NuGet provider now?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
[PS] C:\>Install-Module PowershellGet -Force
NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\administrator.EXOIP\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install
and import the NuGet provider now?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
answered Nov 11, 2020 at 8:57
BenBen
3112 silver badges6 bronze badges
1