• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Менеджер пакетов NuGet
 

Менеджер пакетов NuGet

on

  • 2,754 views

Управление

Управление

Statistics

Views

Total Views
2,754
Views on SlideShare
2,627
Embed Views
127

Actions

Likes
0
Downloads
14
Comments
0

2 Embeds 127

http://getdev.net 125
http://www.getdev.net 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Менеджер пакетов NuGet Менеджер пакетов NuGet Presentation Transcript

    • Андрей КулешовДеловые решения
    • Зачем городить огород? С каждым месяцем всё больше становится разнообразных библиотек программного кода – от минимальных до универсальных Множится их количество И каждая из них раз в месяц или в квартал выпускает обновленную версию Соответственно, встает новая задача – централизованное управление множеством разнообразных библиотек, которые использует ваш проект (или проекты)
    • Пакеты NuGetКому это нужно? Общедоступная лента NuGet.org – всем, кто пишет OpenSource проекты, и всем, кто использует OpenSource проекты Частные ленты (сервера) NuGet – компаниям, которые хотят использовать свои внутренние библиотеки более структурировано
    • Что такое пакет? библиотека .NET, которую кто-то внимательно и аккуратно подготовил для использования во внешних проектах А также некоторая конфигурация, которая необходима для использования этой библиотеки И некоторые подготовительные действия, которые нужны для её использования И некоторые куски кода Или - только библиотека. Или – только конфигурация. Или – только куски кода.
    • Откуда приходят пакеты?Кто запрашивает пакет Кто отдает пакет Кто создает пакет (package feeds) Package Manager UI http://NuGet.org Package Manager Console DevServerNuGet Собственно, мы. Nuget.exe https://nuget.mycompany.com/
    • ДемоУстановка пакета с NuGet
    • Пакет установлен. Куда? В корне каждого из проектов внутри солюшена хранится файл packages.config, хранящий имя и точную версию необходимого пакета Все пакеты, используемые в солюшене, хранятся в папке packages, расположенной в одной директории с файлом солюшена. Каждый пакет хранится в папке вида <имя>.<версия>. Внутри папки находятся распакованные бинарные файлы библиотек и сам файл пакета *.nupkg Также в этой папке находится файл repositories.config, хранящий относительный путь к конфигурационному файлу пакетов проекта.
    • Пакет установлен. И что дальше?Существует два варианта работы с пакетами в системах контроля версий:- Пакет и его содержимое помещаются в хранилище кода. Преимущество: каждый разработчик, забирая рабочую копию, получает полностью работоспособную копию. Недостаток: может занимать большой объем данных в репозитории, особенно – в случае распределенных файловых систем и в случае многочисленных ветвлений- Пакеты не помещаются в хранилище кода, помещается лишь информация о необходимых пакетах; сами же пакеты автоматически скачиваются из лент пакетов в момент билда солюшена. Начиная с версии NuGet 1.6, этот сценарий полностью поддерживается «из коробки»
    • ДемоВосстановление пакетов в NuGet 1.6
    • Что такое пакет? Вторая серия.Тут сидят программисты, знаете ли. Единый файл для скачивания и хранения - CoolLibrary.2.0.1.nupkg (но на самом деле это zip) CoolLibrary.nuspec – спецификация пакета (XML) Web.config.transform – преобразование конфигурационного файла (XSLT-подобное) Каталог lib – скомпилированная библиотека (или несколько версий библиотеки для разных версий .NET Framework) Каталог tools – PowerShell-скрипты, выполняемые при установке пакетов Каталог src – иерархия шаблонов файлов кода Каталог content – иерархия файлов, копируемых в целевой проект как есть
    • Спецификация пакета nuspec<?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <metadata> <id>Castle.Windsor</id> <version>2.5.4</version> <title>Castle.Windsor</title> <authors>Castle Project Contributors</authors> <owners /> <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl> <projectUrl>http://docs.castleproject.org/Windsor.MainPage.ashx</projectUrl> <iconUrl>http://www.castleproject.org/images/wc_logo32.png</iconUrl> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Castle Windsor is best of breed, mature Inversion of Control container available for .NET and Silverlight.</description> <summary>Castle Windsor is best of breed, mature Inversion of Control container available for .NET and Silverlight.</summary> <tags>castle windsor inversionOfControl DependencyInjection</tags> <dependencies> <dependency id="Castle.Core" version="2.5.2" /> </dependencies> </metadata></package>
    • Пакет, вид изнутри NuGet Package Explorer – утилита с пользовательским интерфейсом для просмотра, редактирования и создание NuGet-пакетов http://nuget.codeplex.com/releases Также позволяет открыть любой пакет напрямую из ленты пакетов или опубликовать вновь созданный пакет на NuGet.org
    • ДемоСоздание пакета с нуля вручную
    • ДемоСоздание пакета из командной строки
    • Публикуем наши пакеты Путь для ленивых – подключение пакетов из папки (локальной или сетевой)
    • Отправка пакетов на NuGet.org Регистрируемся на NuGet.org Получаем API Key Сохраняем его на нашей машине Отправляем наш пакет в общую галерею в один щелчок. (Или в несколько. Или из командной строки, но одной командой. Но все равно – действительно быстро.) Новая версия пакета доступна в галерее (Все старые версии также по-прежнему доступны)
    • ДемоУстановка пакета с NuGet
    • Создание собственной ленты Устанавливается в любой VS-веб-проект как пакет NuGetNuGet.Server 1.6.1 (на момент написания) Предоставляет read-only версию ленты пакетов с доступом по http(s) Разворачиваем получившийся веб-сайт на IIS Добавляем новые пакеты в папку Packages внутри этого сайта Эти пакеты автоматически попадают в ленту Можно обеспечить безопасность корпоративной ленты – поддерживается Windows-аутентификация при подключении к ленте, поддерживается https-протокол (только валидные сертификаты!)
    • ДемоСоздание простого сервера NuGet
    • Упрощение обновления Можно централизованно обновлять версию библиотеки для всего солюшена, а не индивидуально для каждого проекта При необходимости – автоматическое создание записей перенаправления версий в .config –файлах (не стоит, однако, думать, что проблема версий решена раз и навсегда. И здесь не обошлось без подводных камней! Например – когда два используемых пакета требуют разных версий третьего пакета)
    • Разное…
    • Добавление PowerShell-командв NuGet консоль
    • Доступность исходников пакетов Крайне актуально для отладки OpenSource- приложений Мы имеем возможность не только выгружать на NuGet.org сам пакет, но и автоматически синхронно отправлять исходный код на http://srv.symbolsource.org/pdb/Public Любой пользователь Visual Studio может подключить этот сервер как хранилище исходных кодов и совершенно прозрачно отлаживать код по загруженным исходникам
    • Диапазоны версий зависимостей Начиная с версии 1.6, можно указывать как точные версии пакетов, от которых зависит ваш пакет, так и диапазоны.1.0 = 1.0 ≤ x(,1.0] = x ≤ 1.0(,1.0) = x < 1.0[1.0] = x == 1.0(1.0) = invalid(1.0,) = 1.0 < x(1.0,2.0) = 1.0 < x < 2.0[1.0,2.0] = 1.0 ≤ x ≤ 2.0empty = latest version. Поддержка нестабильных версий ПО – версия пакета обозначается тире и произвольной строкой 1.0.1-alpha
    • Инфраструктурные пакеты WebActivator – пакет, созданный для облегчения создания других пакетов Помогает внедрять в веб-приложения действия, которые должны выполняться в момент старта или выгрузки приложения Облегчает создание такого кода за счет того, что он может быть локализован в независимых файлах вместо встраивания в global.asax
    • Шаблоны VS с зависимостями напакеты NuGet Введено в версии 1.6
    • Вопросы? Внимательно слушаю!  Андрей Кулешов «Деловые решения» Директорakuleshov@solforbiz.com akuleshov.tulahttp://www.solforbiz.comСпециально для http://GetDev.NET
    • Интересное чтение NuGet Docs http://docs.nuget.org/ Дэвид Эббо – блог разработчика NuGet http://blog.davidebbo.com/ Tips for building Nuget packages http://lostechies.com/joshuaflanagan/2011/06/23/tips- for-building-nuget-packages/
    • Интересное видео В первую очередь: NuGet In Depth: Empowering Open Source on the .NET Platform http://channel9.msdn.com/Events/MIX/MIX11/FRM09 Во вторую очередь: Всё, перечисленное на: http://docs.nuget.org/docs/start-here/videos По желанию: Решение задачи централизованного доступа команды разработчиков к компонентам разработки приложений с помощью NuGet http://www.techdays.ru/videos/3926.html