NuGet создание

В прошлый раз я рассказал как используется NuGet, в этот раз логично рассказать, как создать свой NuGet пакет и разместить его на общем хостинге или же на своем, в локальной директории, либо же в галерее.

Создание своего пакета NuGet

Для примера, и, на мой взгляд в большинстве случаев, вы будете создавать NuGet пакет без зависимостей от других пакетов. Т.е. нам нужен будет любой проект, для простоты пусть это будет простая библиотека с N-ным количеством методов.

Для того, чтобы можно было библиотеку или набор библиотек включить в итоговый NuGet пакет,  необходимо добавить в проект файл с расширением “.nuspec”, где будут описаны все свойства и внутренние зависимости нашего пакета. Пока что в студии нет настроек для создание файлов требуемого расширения, так что можно создать любой текстовый файл, и сменить ему расширение.

В общем виде файл nuspec выглядит следующим образом:

 

Можно сказать, что комментарии тут излишни.  Единственное что стоит указать, какие тэги обязательны, а какие опциональные.

Обязательные тэги:

  • id – нельзя указывать имя с пробелами или спец знаками. В целом тут все те же правила, что и для URL
  • version – версия пакета в формате 1.2.3
  • authors – список авторов кода, через запятую
  • description – описание того, что же делает пакет.

Все остальное опционально и заполняется по собственному желанию. Особенных ограничений нет, кроме iconUrl – рекомендуют изображение 100х100 в формате png с прозрачным фоном. Такие вот требования.

Если вы хотите вложить в пакет много файлов, и руками их прописывать, как любому нормальному программисту лень, то можно воспользоваться пакетным добавлением по маске. Примеры добавления  и использования ниже.

 

После того, как nuspec файл будет сформирован, нам понадобиться NuGet.exe для того, чтобы все упаковать в итоговый файл nupkg.  Данная операция проделывается с помощью команды

Pack “Path.To.Nuspec.File”

Лучше всего поместить эту команду в PostBuild действия при успешной сборке и уже оттуда забирать готовый пакет.

«$(SolutionDir)Tools\NuGet.exe» pack «$(SolutionDir)ArgParser\ArgParser.nuspec»

После выполнения таких нехитрых действий у вас будет полностью готовый и рабочий пакет, который может быть помещен на официальный хостинг или же на свой.

Легче всего начать размещение пакетов с локальных или сетевых папок. Это самый простой и легкий способ, который не потребует никаких серьезных усилий с вашей стороны.

Размещение в локальной директории

Допустим вы выбрали в качестве репозитория пакетов локальную директорию C:\NuGet. Требуется скопировать туда все необходимые вам пакеты, после чего настроить менеджер пакетов NuGet на эту директорию. Делается это следующим образом:

Вызываем менеджер пакетов Tools > Library Package Manager > Package Manager Settings

После чего появится окно с настройками, где можно будет указать репозитории пакетов.

Вводим название репозитория и путь до папки с пакетами, после чего жмем Add и можно пробовать добавить пакеты NuGet из нового репозитория.

Как видно на снимке, появился новый ресурс LocalRepository и при выделении его, загрузятся пакеты NuGet, которые были помещены в соответствующую папку. Точно так же все будет работать и с сетевой папкой.

Как видите, все более чем просто!

Размещение в галлерее

Размещать в общей галлерее пакетов NuGet можно после регистрации на сайте http://nuget.org/. Сам процесс регистрации очень прост, и рассматривать здесь его не имеет смысла. После того, как вы зарегистрировались, можно будет добавить свой пакет.

Добавление возможно в двух режимах: через веб интерфейс, и через командную строку с помощью NuGet.exe.

Добавление через веб интерфейс

Жмем на GetStarted и следуем инструкциям.

После того, как пакет будет загружен, вы будете перенаправлены на страницу, где можно будет отредактировать данные, которые были указаны в nuspec файле.

После  того, как вы убедитесь, что все заполнено должным образом, можно жать на Next в низу страницы, и вы попадете на настройку логотипа или скриншота для пакета. Это будет заключительным шагом в публикации.

После нажатия на кнопку Finish, примерно через минуту можно будет перейти на вкладку My Contributions и увидеть свой пакет.

При переходе на страницу пакета можно будет отредактировать некоторые его свойства, удалить его. Узнать сколько раз люди скачали пакет, узнать что думают остальные о вашем продукте.

Добавление через командную строку

После регистрации, можно узнать свой GUID для обновления и добавления пакетов с помощью консольной утилиты nuget.exe. Узнать свой GUID можно в закладке MY ACCOUNT, что в правом верхнем углу. После нажатия на указанный пункт меню, вы увидете следующую картину

GUID здесь фейковый, так что все оке )) Но вы свой никому все равно не говорите. На данной странице так же указан пример, как деплоить свои пакеты из командной строки

nuget push -source http://packages.nuget.org/v1/ MyPackage.1.0.nupkg 64f10e0c-207a-4728-95bb-1b0e0f469511

Первый параметр push говорит, о том, что мы загружает пакет, далее идет параметр  source , который говорит, куда мы загружаем пакет. Далее идет имя пакета для загрузки, и самым последним параметром проходит секретный GUID.

 

В целом тоже ничего особенно сложного нет.

Размещение на своем хостинге

Данный способ размещения идеален, если у вас проприетарные библиотеки или коммерческое ПО, а проект большой и работа ведется несколькими командами. В дальнейшем сообщество планирует сделать такое размещение пакетов проще и с большим количеством функционала.

На данный момент приватная галлерея пакетов поддерживает только отдачу пакетов, загружать же их придется руками.

Для создания своего сайта раздачи пакетом потребуется для начала создать пустой проект веб-сайта.

После создания проекта набираем команду в Package Manager: install-package nuget.Server

После этого загрузятся и установятся все необходимые пакеты зависимостей. Пустой проект превратиться в готовый сервер для пакетов. Появятся новые директории. Самая важная для нас, это папка Packages, куда собственно и будем добавлять готовые пакеты NuGet.

Добавляем существующие пакеты в папку и можно запускать сайт. После запуска увидим следующее:

Комментарии на сайте говорят сами за себя. Теперь можно добавить сайт в доступные ресурсы и проверить, как это все работает.

После этого открываем менеджер пакетов, выбираем свой ресурс и наблюдаем, как показываются наши пакеты

Вуаля!

 

Надеюсь в дальнейшем вам помогут эти знания и натолкнут на какие-либо новые варианты использования NuGet, на возможность декомпозиции ваших проектов и подгрузки зависимых частей через NuGet.

 

Для себя я уже решил, что все зависимости, я буду стараться подключать через NuGet. В этом случае библиотеки подгружаются локально и нет необходимости отслеживать правильность путей в ссылках на библиотеки. Причем даже новички не ошибутся, если подключат ссылку на nunit через NuGet, т.к. все члены команды получат верные пути до библиотек и не будет крика на тему «Правь на относительные пути проекта!!!» ;)

 

Hard’n’heavy!

 

 

 

 

 

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