Создание пакета 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.

См. также