Андрей КулешовДеловые решения
Зачем городить огород? С каждым месяцем всё больше становится  разнообразных библиотек программного кода – от  минимальны...
Пакеты NuGetКому это нужно? Общедоступная лента NuGet.org – всем, кто пишет  OpenSource проекты, и всем, кто использует  ...
Что такое пакет? библиотека .NET, которую кто-то внимательно и    аккуратно подготовил для использования во    внешних пр...
Откуда приходят пакеты?Кто запрашивает пакет   Кто отдает пакет               Кто создает пакет                        (pa...
ДемоУстановка пакета с NuGet
Пакет установлен. Куда? В корне каждого из проектов внутри солюшена  хранится файл packages.config, хранящий имя и  точну...
Пакет установлен. И что дальше?Существует два варианта работы с пакетами в системах  контроля версий:- Пакет и его содержи...
ДемоВосстановление пакетов в NuGet 1.6
Что такое пакет? Вторая серия.Тут сидят программисты, знаете ли. Единый файл для скачивания и хранения -    CoolLibrary.2...
Спецификация пакета nuspec<?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">...
Пакет, вид изнутри NuGet Package Explorer – утилита с  пользовательским интерфейсом для просмотра,  редактирования и созд...
ДемоСоздание пакета с нуля вручную
ДемоСоздание пакета из командной строки
Публикуем наши пакеты Путь для ленивых – подключение пакетов из папки (локальной или сетевой)
Отправка пакетов на NuGet.org Регистрируемся на NuGet.org Получаем API Key Сохраняем его на нашей машине Отправляем на...
ДемоУстановка пакета с NuGet
Создание собственной ленты Устанавливается в любой VS-веб-проект как пакет  NuGetNuGet.Server 1.6.1 (на момент написания)...
ДемоСоздание простого сервера NuGet
Упрощение обновления Можно централизованно обновлять версию  библиотеки для всего солюшена, а не  индивидуально для каждо...
Разное…
Добавление PowerShell-командв NuGet консоль
Доступность исходников пакетов Крайне актуально для отладки OpenSource-  приложений Мы имеем возможность не только выгру...
Диапазоны версий зависимостей Начиная с версии 1.6, можно указывать как точные версии пакетов,   от которых зависит ваш п...
Инфраструктурные пакеты WebActivator – пакет, созданный для облегчения создания других пакетов Помогает внедрять в веб-пр...
Шаблоны VS с зависимостями напакеты NuGet Введено в версии 1.6
Вопросы?          Внимательно слушаю!                   Андрей Кулешов                  «Деловые решения»                ...
Интересное чтение NuGet Docs  http://docs.nuget.org/ Дэвид Эббо – блог разработчика NuGet  http://blog.davidebbo.com/ T...
Интересное видео В первую очередь:  NuGet In Depth: Empowering Open Source on the .NET  Platform   http://channel9.msdn.c...
Upcoming SlideShare
Loading in …5
×

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

3,699 views

Published on

Управление

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,699
On SlideShare
0
From Embeds
0
Number of Embeds
159
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Андрей КулешовДеловые решения
  2. 2. Зачем городить огород? С каждым месяцем всё больше становится разнообразных библиотек программного кода – от минимальных до универсальных Множится их количество И каждая из них раз в месяц или в квартал выпускает обновленную версию Соответственно, встает новая задача – централизованное управление множеством разнообразных библиотек, которые использует ваш проект (или проекты)
  3. 3. Пакеты NuGetКому это нужно? Общедоступная лента NuGet.org – всем, кто пишет OpenSource проекты, и всем, кто использует OpenSource проекты Частные ленты (сервера) NuGet – компаниям, которые хотят использовать свои внутренние библиотеки более структурировано
  4. 4. Что такое пакет? библиотека .NET, которую кто-то внимательно и аккуратно подготовил для использования во внешних проектах А также некоторая конфигурация, которая необходима для использования этой библиотеки И некоторые подготовительные действия, которые нужны для её использования И некоторые куски кода Или - только библиотека. Или – только конфигурация. Или – только куски кода.
  5. 5. Откуда приходят пакеты?Кто запрашивает пакет Кто отдает пакет Кто создает пакет (package feeds) Package Manager UI http://NuGet.org Package Manager Console DevServerNuGet Собственно, мы. Nuget.exe https://nuget.mycompany.com/
  6. 6. ДемоУстановка пакета с NuGet
  7. 7. Пакет установлен. Куда? В корне каждого из проектов внутри солюшена хранится файл packages.config, хранящий имя и точную версию необходимого пакета Все пакеты, используемые в солюшене, хранятся в папке packages, расположенной в одной директории с файлом солюшена. Каждый пакет хранится в папке вида <имя>.<версия>. Внутри папки находятся распакованные бинарные файлы библиотек и сам файл пакета *.nupkg Также в этой папке находится файл repositories.config, хранящий относительный путь к конфигурационному файлу пакетов проекта.
  8. 8. Пакет установлен. И что дальше?Существует два варианта работы с пакетами в системах контроля версий:- Пакет и его содержимое помещаются в хранилище кода. Преимущество: каждый разработчик, забирая рабочую копию, получает полностью работоспособную копию. Недостаток: может занимать большой объем данных в репозитории, особенно – в случае распределенных файловых систем и в случае многочисленных ветвлений- Пакеты не помещаются в хранилище кода, помещается лишь информация о необходимых пакетах; сами же пакеты автоматически скачиваются из лент пакетов в момент билда солюшена. Начиная с версии NuGet 1.6, этот сценарий полностью поддерживается «из коробки»
  9. 9. ДемоВосстановление пакетов в NuGet 1.6
  10. 10. Что такое пакет? Вторая серия.Тут сидят программисты, знаете ли. Единый файл для скачивания и хранения - CoolLibrary.2.0.1.nupkg (но на самом деле это zip) CoolLibrary.nuspec – спецификация пакета (XML) Web.config.transform – преобразование конфигурационного файла (XSLT-подобное) Каталог lib – скомпилированная библиотека (или несколько версий библиотеки для разных версий .NET Framework) Каталог tools – PowerShell-скрипты, выполняемые при установке пакетов Каталог src – иерархия шаблонов файлов кода Каталог content – иерархия файлов, копируемых в целевой проект как есть
  11. 11. Спецификация пакета 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>
  12. 12. Пакет, вид изнутри NuGet Package Explorer – утилита с пользовательским интерфейсом для просмотра, редактирования и создание NuGet-пакетов http://nuget.codeplex.com/releases Также позволяет открыть любой пакет напрямую из ленты пакетов или опубликовать вновь созданный пакет на NuGet.org
  13. 13. ДемоСоздание пакета с нуля вручную
  14. 14. ДемоСоздание пакета из командной строки
  15. 15. Публикуем наши пакеты Путь для ленивых – подключение пакетов из папки (локальной или сетевой)
  16. 16. Отправка пакетов на NuGet.org Регистрируемся на NuGet.org Получаем API Key Сохраняем его на нашей машине Отправляем наш пакет в общую галерею в один щелчок. (Или в несколько. Или из командной строки, но одной командой. Но все равно – действительно быстро.) Новая версия пакета доступна в галерее (Все старые версии также по-прежнему доступны)
  17. 17. ДемоУстановка пакета с NuGet
  18. 18. Создание собственной ленты Устанавливается в любой VS-веб-проект как пакет NuGetNuGet.Server 1.6.1 (на момент написания) Предоставляет read-only версию ленты пакетов с доступом по http(s) Разворачиваем получившийся веб-сайт на IIS Добавляем новые пакеты в папку Packages внутри этого сайта Эти пакеты автоматически попадают в ленту Можно обеспечить безопасность корпоративной ленты – поддерживается Windows-аутентификация при подключении к ленте, поддерживается https-протокол (только валидные сертификаты!)
  19. 19. ДемоСоздание простого сервера NuGet
  20. 20. Упрощение обновления Можно централизованно обновлять версию библиотеки для всего солюшена, а не индивидуально для каждого проекта При необходимости – автоматическое создание записей перенаправления версий в .config –файлах (не стоит, однако, думать, что проблема версий решена раз и навсегда. И здесь не обошлось без подводных камней! Например – когда два используемых пакета требуют разных версий третьего пакета)
  21. 21. Разное…
  22. 22. Добавление PowerShell-командв NuGet консоль
  23. 23. Доступность исходников пакетов Крайне актуально для отладки OpenSource- приложений Мы имеем возможность не только выгружать на NuGet.org сам пакет, но и автоматически синхронно отправлять исходный код на http://srv.symbolsource.org/pdb/Public Любой пользователь Visual Studio может подключить этот сервер как хранилище исходных кодов и совершенно прозрачно отлаживать код по загруженным исходникам
  24. 24. Диапазоны версий зависимостей Начиная с версии 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
  25. 25. Инфраструктурные пакеты WebActivator – пакет, созданный для облегчения создания других пакетов Помогает внедрять в веб-приложения действия, которые должны выполняться в момент старта или выгрузки приложения Облегчает создание такого кода за счет того, что он может быть локализован в независимых файлах вместо встраивания в global.asax
  26. 26. Шаблоны VS с зависимостями напакеты NuGet Введено в версии 1.6
  27. 27. Вопросы? Внимательно слушаю!  Андрей Кулешов «Деловые решения» Директорakuleshov@solforbiz.com akuleshov.tulahttp://www.solforbiz.comСпециально для http://GetDev.NET
  28. 28. Интересное чтение 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/
  29. 29. Интересное видео В первую очередь: 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

×