Создание пакета NuGet с помощью .NET CLI
Примечание.
Ниже приведены примеры команд командной строки для Unix. Показанная здесь команда dotnet pack
точно так же работает в Windows.
Библиотеки .NET Standard и .NET Core должны распространяться в виде пакетов NuGet. Именно так распространяются и используются все библиотеки .NET Standard. Проще всего это делать с помощью команды dotnet pack
.
Представим, что вы только что создали полезную библиотеку, которую хотите распространить через NuGet. Для этого можно создать пакет NuGet с помощью кроссплатформенных средств. В приведенном ниже примере используется библиотека SuperAwesomeLibrary, предназначенная для netstandard1.0
.
Если у вас есть транзитивные зависимости, то есть проекты, которые зависят от других пакетов, необходимо обязательно восстановить пакеты для всего решения с помощью команды dotnet restore
, прежде чем создавать пакет NuGet. Если не сделать этого, команда dotnet pack
будет работать неправильно.
Вам не нужно выполнять команду dotnet restore
, так как она выполняется неявно всеми командами, которые требуют восстановления, например dotnet new
, dotnet build
, dotnet run
, dotnet test
, dotnet publish
и dotnet pack
. Чтобы отключить неявное восстановление, используйте параметр --no-restore
.
Команду dotnet restore
по-прежнему удобно использовать в некоторых сценариях, где необходимо явное восстановление, например в сборках с использованием непрерывной интеграции в Azure DevOps Services или системах сборки, где требуется явно контролировать время восстановления.
Сведения об управлении веб-каналами NuGet см. в документации по dotnet restore
.
Восстановив пакеты, можно перейти в каталог, где находится библиотека:
cd src/SuperAwesomeLibrary
Затем нужно выполнить всего лишь одну команду в командной строке:
dotnet pack
Папка /bin/Debug теперь будет выглядеть так:
$ ls bin/Debug
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg
Обратите внимание на то, что при этом создается пакет, который можно отлаживать. Если вы хотите создать пакет NuGet с двоичными файлами выпуска, вам нужно просто добавить параметр --configuration
(или -c
) и использовать release
в качестве аргумента.
dotnet pack --configuration release
В папке /bin теперь будет папка release, содержащая пакет NuGet с двоичными файлами выпуска:
$ ls bin/release
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg
теперь у вас есть все необходимые файлы для публикации пакета NuGet.
Не путайте команду dotnet pack
с командой dotnet publish
.
Важно заметить, что команда dotnet publish
в этом процессе не применяется. Команда dotnet publish
предназначена для развертывания приложений со всеми зависимостями в одном пакете, а не для создания пакета NuGet, который будет распространяться и использоваться посредством NuGet.