Nuget використання - about
Сьогодні я хотів би розповісти про використання NuGet. Напевно ви вже щось чули про цю систему управління зовнішніми залежностями. Останнім часом система набирає обертів і все більше і більше розробників поміщають свої системи в обгортки для розповсюдження за допомогою NuGet.
Отже, NuGet - це менеджер для управління залежностями від сторонніх бібліотек. За допомогою цього інструменту можна встановлювати, оновлювати і прибирати залежності для вашого проекту з великою легкістю. Стосується як для desktop програм, так і для web. Зокрема при розгортанні CMS Orchard, вона половину збірок тягне за умови встановлення самостійно з бібліотеки пакетів. Є приклади використання NuGet для Silverlight.
При вивченні матеріалів по NuGet, основою плюсом виступає доступність загальних бібліотек для ваших проектів. Умовні противники NuGet, або ж принципова опозиція запитує, навіщо потрібен NuGet для своїх загальних бібліотек, якщо можна існує external для SVN та інші подібні штуки для систем контролю версій? Тобто можна послатися на стабільну гілку початкових кодів.
Розробники NuGet відповідають, що
- не треба контролювати доступ до системи контролю версій,
- вихідний код не показується іншим групам,
- не треба стежити і перемикатися на інші ревізії вручну (може ви захотіли зіскочити з гілки Release, на більш ранюю, або ви посилаєтеся на ревізію в trunk)
Непогані плюси. Тим більше що тепер ваша улюблена бібліотека не загубиться серед репозиторіїв і проектів.
Tools> Library Package Manager> Add Library Package Reference ...
Менеджер пакетів NuGet виглядає досить звично, якщо ви користувалися менеджером доповнень для самої студії.
Все точно так же. Список доступних пакетів, короткий опис при виділенні пакета. На акордеонної вкладці Online список всіх доступних місць, де можуть знаходиться пакети NuGet. Зараз там тільки один офіційний ресурс, але ви з легкістю можете додати локальні директорії, мережеві директорії, свої власні мережеві сховища пакетів NuGet.
Установка і оновлення пакетів, до неподобства просте - треба просто натиснути на кнопку Install \ Update при виділенні пакета зі списку.
Трохи варто сказати про пошук пакетів. У мене в студії пошук періодично пропадає і я користуюся пошуком на офіційному сайті nuget.org. На даний момент там міститься 958 пакетів. Про пошук і установку за допомогою консолі розповім трохи нижче.
Всі дії можна здійснювати з консолі менеджера пакетів, яка з'являється при установці NuGet в студію.
Дії в консолі здійснюються для певного проекту, яка була обрана в якості DefaultProject. На скріншоті обраний WindowsFormsApplication1, і всі пакети які я вкажу в консолі будуть встановлені для цього проекту, якщо проект не вказано спеціально.
Виводить повний список доступних пактів в консолі не дуже зручно, так що краще знайти його заздалегідь на сайті. Наприклад додамо в проект StructureMap. Переходимо на офіційний сайт і шукаємо по імені. В результаті пошуку ви швидше за все потрапите на сторінку такого вигляду:
установка пакетів
Тут вже вказана команда, яку треба виконати для установки пакета. Копіюємо текст і вставляємо в консоль.
В консолі видно, які пакети встановилися і наскільки успішно. Після того як все встановилося, ви побачите, що серед файлів проекту з'явився новий елемент packages.config. У цьому файлі зазначено, які пакунки були встановлені і якої версії. Загальний вигляд файлу такий:
На жаль, поки що не можна вказати при додаванні пакета кілька проектів для інтеграції. Загальний синтаксис установки виглядає наступним чином:
Install-Package [-Id]
Пакети викачуються в кореневу директорію програмного рішення в папку packages, так що не забудьте додати її в свою систему контролю версій.
Так і з консолі. Операції по оновленню і видаленню так само можна здійснювати двома способами. Для менеджера пакетів все кристально ясно, з консоллю все трохи складніше, але і гнучкіше.
Основні команди для роботи з консоллю:
Package - ця команда перераховує все пакети встановлені для обраного «за замовчуванням» проекту.
Id Version Description
- --- ----
structuremap 2.6.2 StructureMap is a Dependency Injection / Inversion of Control tool for .Net that can be used to improve the architectural qualities of an object ori ...
UpdatePackage - за допомогою цієї команди здійснюється оновлення встановлених пакетів. Для поновлення залежностей в проекті «за замовчуванням» необхідно написати