Nuget за 10 хвилин, rude nerd

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

Вперше коли я побачив NuGet я подумав: "Ей, я вже бачив це в Джаві!» (Знаєте, як в тій серії СуасПарка: "Сімпсони вже робили це!» :)). Але як же я помилявся, і в наступних постах я Вам розповім чому.

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.Так ж ви можете додаватися додаткові фіди, або ж свої, які будуть перебувати на мережевому диску для внутрішнього використання Вашою компанією, або ж фид доступ до якого матимуть інші люди або організації. У будущех постах я Вам розповім як створювати свої фіди, і тд.

Тепер давайте трохи поговоримо про те як створити свої репозиторії компонент.

На сайті проекту офіційно розповісти про два методи створення фідів:
1. Фіди який розміщені на локальному або мережевому комп'ютері
Насправді це дуже легкий метод. Для того щоб вопсользоваться їм, давайте для початку скачайте кілька компонент з офіційного фида NuGet:
а. Створіть будь-яку тимчасову аплікацію. У моєму прикладі я буду використовувати MVC 3.0.
б. Давайте тепер скачати кілька компонент. У прикладі я скачав такі компоненти як: sqlce, log4net, elmah.
в. Тепер давайте перейдемо в папку де СОЛЮШЕН нашої тимчасової програми створено:

Зверніть увагу що папка з назвою packages створена. У цій папці зберігаються компоненти які були тільки що завантажений нами. Тепер відкрийте цю папку і скопіюйте компоненти в папку на ваш смак. У моєму прикладі я буду використовувати шлях: «d: \ TempPackages».

В результаті ми повинні отримати щось на зразок цього:

м Тепер відкрийте Visual Studio, і натисніть: Tools-> Options-> Package Manager. Тепер давайте створимо новий фід. Щоб зробити це нам потрібно зробити всього лише кілька дій:
Введіть ім'я нового фида. Будь-яке, на Ваш смак.
Тепер введіть фізичний шлях до папки де ми зберегли викачані компоненти.
Натисніть кнопку «Add».

Власне це і всі дії які ми повинні були предпрінять.Теперь запустіть консоль, виберіть фид який ми тільки що створили. Тепер використовуючи комманду «List-Package» Ви отримаєте список компонент які були збереження в нашій директорії :)

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

Це звичайний проект ASP.Net MVC 2.0. Але то? що нас цікавить - це ODataService під назвою Package.

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

Як створити свій пакет
Давайте трохи поговоримо про .nupkg файлі. Ви можете змінити разширению .nupkg на .zip щоб побачити що це всього лише zip архів.
Для того щоб створити власну компоненту Вам необхідно слідувати простим правилам які описом на домашній сторінці цього чудового продукту. Але давайте про них в деталях:
Для початку давайте створимо звичайну бібліотеку:

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

Додатково ми повинні додати файл з інформацією про нашу компоненту. Це звичайний XML файл, тільки з дозволом .nuspec.

Мій .nuspec файл буде мати такий вигляд:

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

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

Якщо все пройде вдало ми отримаємо Слуда повідомлення:
Successfully created package 'd: \ temp \ SuperCoolLibrary.1.0.nupkg'.

Тепер якщо ми скопіруемий отримані файл в наші фіди, ми зможемо побачити що - щось на зразок того що є на зображенні:

Як бачите NuGet дозволяє дуже легко створювати свої репозиторії компонент, ділитися компонентами з людьми, і стати знаменитим :)

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

Для того щоб створювати репозиторії на своїй локальній машині - можна скористатися обличним сервісами які надають дисковий простір. Можна взяти мій улюблений сервіс - DropBox. Кожен раз коли Ви використовуєте один з таких сервісів - ви отримуєте папку, яка синхронізує дані в цій папці з даними на обалчном сервісі. Тому, якщо ви будете використовувати цей сервіс на багатьох комп'ютерах - у вас буде ідентична папка на всіх комп'ютерах. Тому ви можете створювати свій репозиторій в одній з таких папок. і налаштувати його на всіх комп'ютерах на одну папку :) Тому у вас буде завжди оновлений репозиторій на всіх комп'ютерах.

Поділитися посиланням: