Создание nuget-пакетов при помощи консольной утилиты nuget.exe

Я уже рассматривал вопрос о том, как создать собственный Nuget-сервер и как создать Nuget-пакет с помощью графической утилиты. На этот раз я расскажу как сделать то же самое, используя только консольную утилиту nuget.exe.

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

nuget.exe

Для работы нам потребуется консольная утилита nuget.exe, которую можно загрузить с официального сайта. Описание работы с этой утилитой можно найти здесь.

Создание пакета

Создать пакет в этом случае можно разными способами.

Если вам требуется создать простой пакет, где будет содержаться одна сборка можно воспользоваться следующей командой:

nuget spec Core.dll

Эта команда создаст файл манифеста (nuspec), необходимого для создания пакета.

В более сложных случаях, когда в пакете содержится множество файлов и скриптов по установке, можно создать этот файл самостоятельно (спецификация nuspec), так же как и структуру папок.

Другим вариантом будет использование графической утилиты, в которой существует опция Export:

В этом случае вы получите всю структуру папок и файлов, а также файл nuspec без лишних усилий. После этого вы можете изменять манифест nuspec (поскольку это — обычный файл XML), например, в процессе автоматизированной сборки.

Упаковка пакета

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

nuget pack MyPackage.1.0.0.nuspec

В результате работы этой утилиты мы получим файл nupkg, который готов к публикации на сервере. По сути, файл nupkg — это ZIP-архив, внутри которого находится всё содержимое пакета в установленном формате.

Публикация пакета

Для публикации пакета необходимо использовать следующую команду nuget.exe:

nuget push MyPackage.1.0.0.nupkg 1ab183523cx7usf -s http://nuget.somecompany.com/

Как видно из формата команды, мы указываем имя пакета, ключ сервера и адрес сервера.

Если мы всё время работаем с одним и тем же nuget-сервером, то эти параметры можно определить в конфигурационном файле, который расположен по указанному пути — %AppData%\NuGet\NuGet.config.

В этом случае команда по публикации будет немного короче:

nuget push MyPackage.1.0.0.nupkg

Если вы публикуете свои пакеты на nuget.org, то вам необходимо зарегистрироваться там и получить ключ. После этого выполнить команду:

NuGet SetApiKey Your-API-Key

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