Nuget за 10 минут!

Сегодня я хочу Вам рассказать что ж такое NuGet. C NuGet я столкнулся когда готовился к докладу про MVC 3.0, и очень рад тому опыту который я получил.

Впервые когда я увидел NuGet я подумал:»Эй, я уже видел это в Джаве!» ( знаете, как в той серии СуасПарка:»Симпсоны уже делали это!»:)). Но как же я ошибался, и в последующих постах я Вам расскажу почему.

Итак, что ж такое NuGet?
NuGet — это бесплатный продукт, с открытым кодом который облегчает добавление сторонних библиотек в ваше приложение. NuGet также является участником ASP.NET Gallery в Outercurve Foundation(больше информации про это классный продукт Вы можете найти на домашнем сайте этого продукта: http://nuget.codeplex.com/).

Где, когда, зачем и что облегчает этот продукт?
Вы когда-нибудь устанавливали такую компоненту как Elmah?(http://code.google.com/p/elmah/ ). Если да — то всего лишь посчитайте сколько действий Вам надо совершить чтобы использовать эту компоненту:

1. Используйте любой поисковик чтобы найти эту компоненту.
2. Зайти на домашний сайт Elmah.
3. Нажать на кнопку Скачать
4. Выбрать необходимый пакет ( с исходным кодом, без, и т.д) .
5. Скачать библиотеку.
6. Разархивировать то что было скачанно.
7. Добавить библиотеку в Вашу аппликацию.
8. Поискать как же настраивать эту библиотеку:)
9. Внести необходимые изменения в web.config.
10. Использовать в конце-концов!

Между прочим — очень приличная компонента, реккомендую к использованию.

Как это сделать с помощью NuGet?
Существует вообще два метода: метод блондинки и метод гика:)

Метод блондинки:
1. Кликните правой кнопкой мыши на проект и выберите «Add Library Package Reference…»

2. В строке поиска введите «Elmah» и нажмите Enter.
3. Найдите Elmah в резулитате и нажмите Install.
4. Используйте!

Метод Гика:
1. Нажмите «Ctrl+W» & «Ctrl + Z» или выберите в меню: Tools->Library Package Manager -> Package Manager Console.
2. Введите комманду «Install-Package Elmah» и нажмите «Enter» ( в будущих постах я расскажу что мы делаеми).
3. Ипользуйте!

Как видите никакой камасутры с web.config файлом, поиска версий в интернете, и других вещей которые необходимы для корректной работы компонент. В будущих постах я буду использовать метод гика потому как я ненавижу использование мыши:)

Что же мы сделали?
Library Package Manager — это аддон который вместе с NuGet инсталлируется в Вашу Visual Studio. Эта классная штука предоставляет нам консоль с помощью которой мы можем совершать ращличные действия над пакетами в NuGet. Так же, что хотелось бы добавить — Вы можете сами расширять комманды консоли с помощью PowerShell скриптов, а так же комманды могут расширяться с помощью библиотек которые вы доставляете с помощью NuGet.

Откуда берутся библиотеки в NuGet?
Информация про пактеы живет в фидах. Когда вы инсталлируете NuGet , автоматически добавляется официальный фид NuGet.Так же вы можете добавляться дополнительные фиды, или же свои, которые будут находиться на сетевом диске для внутреннего использования Вашей компанией, или же фид доступ к которому будут иметь другие люди или организации. В будущех постах я Вам расскажу как создавать свои фиды, и тд.

Как проинсталировать NuGet?
Я проинсталлировал NuGet когда инсталлировал MVC 3.0 , хотя Вы можете пойти на домашнюю страничку этого классного продукта, и скачать его там: http://nuget.codeplex.com/.

Теперь давайте немного поговорим о том как создать свои репозитории компонент.

На сайте проекта официально расказанно про два метода создания фидов:
1. Фиды который размещенны на локальном или сетевом компьютере
На самоме деле это очень легкий метод. Для того чтобы вопсользоваться им, давайте для начала скачаем несколько компонент с официального фида NuGet:
а. Создайте любую временную аппликацию. В моем примере я буду использовать MVC 3.0.
б. Давайте теперь скачаем несколько компонент. В примере я скачал такие компоненты как: sqlce, log4net, elmah.
в. Теперь давайте перейдем в папку где солюшен нашей временной программы создан:

Обратите внимание что папка с названием packages созданна. В этой папке храняться компоненты которые были только что скачанны нами. Теперь откройте эту папку и скопируйте компоненты в папку на ваш вкус. В моем примере я буду использовать путь: «d:\TempPackages».

В результате мы должны получить что-то вроде этого:

г. Теперь откройте Visual Studio, и нажмите: Tools->Options->Package Manager. Теперь давайте создадим новый фид. Чтобы сделать это нам нужно совершить всего лишь несколько действий:
Введите имя нового фида. Любое, на Ваш вкус.
Теперь введите физический путь к папке где мы сохранили скачанные компоненты.
Нажмите кнопку «Add».

Собственно это и все действия которые мы должны были предпринять.Теперь запустите консоль, выберите фид который мы только что создали. Теперь используя комманду «List-Package» Вы получите список компонент которые были сохраненны в нашей директории:)

2. Создание фида к которому можно доступиться извне.
Давайте представим ситуацию — мы хотим создать фид к которому смогут доступаться люди из дргуих стран, компаний, и вообще люди которые не имеют доступ к Вашему локальному репозиторию. При этом вы хотите дать им возможность использовать Ваш фид точно также как Вы используете официальный.

Для того чтобы это сделать нам нужно скачать с сайта codeplex. Итак:
а. Для начала давайте скачаем последний исходный код NuGet. Вы можете это сделать зайдя по следующей ссылке:
http://nuget.codeplex.com/SourceControl/list/changesets
Выберите последний changelist и скачайте их.
б. Распакуйте скаченный архив.Откройте распакованный солюшен и найдите проект под названием: NuPack.Server:

Это обычный проект ASP.Net MVC 2.0. Но то? что нас интересует — это ODataService под названием Package.

в. Теперь загрузите все компоненты к которым вы ходите дать доступ в папку Packages. По умолчанию она пустая.
г. Теперь разместите этот проект на IIS.
д. Теперь перейдите на страничку конфигурации и просто добавте новый фид! Все должно выглядить приблизительно как на этой картинке:

Где http://localhost:14357 — аддресс размещенного нами NuGet.Server проекта. и /odata/v1 — ссылка на наш ODataService.

Как создать свой пакет
Давайте немного поговорим о .nupkg файле. Вы можете изменить разширение .nupkg на .zip чтобы увидеть что это всего лишь zip архив.
Для того чтобы создать собственную компоненту Вам необходимо следовать простым правилам которые описанны на домашней страничке этого превосходного продукта. Но давайте о них в деталях:
Для начала давайте создадим обычную библиотеку:

    ///
    ///
    ///
    public class SomeCoolLibrary
    {
        ///
        ///
        ///
        private string _version = "1.0";

        ///
        /// Gets the version.
        ///
        ///
        public string GetVersion()
        {
            return this._version;
        }
    }

Собственно это и весь код нашей библиотеки сделанной только для примера. Теперь давайсте скомпилируем полученную библиотеку и возьмем полученную .dll. Теперь нам нужно создать специфическую структуру папок для создание компоненты. Перед тем как создавать компоненту, такие папки должны быть созданны:
1. Lib — в эту папку мы должны положить бинарные файлы, к примеру .dll.
2. Tools — здесь мы можем расположить разные инструменты которыми могут быть необходимы для нашей компоненты.
3. Content — дополнительные файлы которые будут скопированны в корневой каталог аппликации при инсталяции нашей компоненты.

Дополнительно мы должны добавить файл с информацией про нашу компоненту. Это обычный XML файл, только с разрешением .nuspec.

Мой .nuspec файл будет иметь такой вид:

SuperCoolLibrary
1.0
Dima Maleev
Super Cool Library from Dima Maleev
en-US

Вы можете получить больше информации про структуру этого файла на домашней страничке продукта:
http://nuget.codeplex.com/documentation?title=Nuspec%20Format

Чтобы создать .nupkg файл, нам необходимо скачать небольшую программку по ссылке: http://nuget.codeplex.com/releases/52018/download/184132

Теперь нам необходимо выполнить комманду:
nuget pack d:\MyPackage\CoolLibrary.nuspec -b d:\MyPackage -o d:\temp

Если все пройдет удачно мы получим слудующее сообщение:
Successfully created package ‘d:\temp\SuperCoolLibrary.1.0.nupkg’.

Теперь если мы скопируемый полученные файл в наши фиды, мы сможем увидеть что — то вроде того что есть на картинке:

Как видите NuGet позволяет очень легко создавать свои репозитории компонент, делиться компонентами с людьми, и стать знаменитым:)

Поделюсь ещё одним секретом, как можно легко использовать nuget и иметь свой репозиторий компонент на нескольких компьютерах одновременно.

Для того чтобы создавать репозитории на своей локальной машине — можно воспользоваться облычным сервисами которые предоставляют дисковое пространство. Можно взять мой любимый сервис — DropBox. Каждый раз когда Вы используете один из таких сервисов — вы получаете папку, которая синхронизирует данные в этой папке с данными на обалчном сервисе. Потому, если вы будете использовать этот сервис на многих компьютерах — у вас будет идентичная папка на всех компьютерах. Потому вы можете создавать свой репозиторий в одной из таких папок , и настроить его на всех компьютерах на одну папку:) Потому у вас будет всегда обновленный репозиторий на всех компьютерах.

9 комментариев на “Nuget за 10 минут!

  1. Уведомление: Некоторые интересные ссылки (Март) | Александр Богатырев: сфера

  2. Уведомление: ??????????? ????????? ?? ????????? ? ???????? Microsoft ?? ??????? ????? – ?????? 2011 - MSDN Blogs

  3. Уведомление: Технические материалы по продуктам и решениям Microsoft на русском языке – апрель 2011 | Alexander Knyazev: блог

  4. Уведомление: Ежемесячный дайджест технических материалов. | Тверской MCP-Клуб

Оставьте комментарий