Команда dotnet pack выполняет сборку проекта и создает пакеты NuGet. Результат выполнения команды — пакет NuGet (то есть файл NUPKG).
Если вы хотите создать пакет, содержащий отладочные символы, доступны два варианта:
--include-symbols — создает пакет символов.
--include-source — создает пакет символов с папкой src, содержащей исходные файлы.
Зависимости NuGet упакованного проекта добавляются в файл NUSPEC, чтобы их можно было разрешить при установке пакета. Если упакованный проект содержит ссылки на другие проекты, другие проекты не включаются в пакет. Сейчас при наличии межпроектных зависимостей требуется один пакет на каждый проект.
dotnet pack по умолчанию сначала выполняет сборку проекта. Чтобы избежать этого, передайте параметр --no-build. Этот вариант часто бывает полезен, например в сценариях сборки с непрерывной интеграцией (CI), когда вы знаете, что код был собран недавно.
Примечание
В некоторых случаях выполнить неявную сборку невозможно. Это может произойти, если задано свойство GeneratePackageOnBuild, позволяющее избежать циклической зависимости между целевыми объектами сборки и упаковки. Кроме того, сборка может завершиться ошибкой при наличии заблокированного файла или другой проблемы.
Вам не нужно выполнять команду dotnet restore, так как она выполняется неявно всеми командами, которые требуют восстановления, например dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish и dotnet pack. Чтобы отключить неявное восстановление, используйте параметр --no-restore.
Эта команда поддерживает параметры dotnet restore при передаче в длинной форме (например, --source). Параметры в краткой форме, например -s, не поддерживаются.
Скачивание манифестов рабочих нагрузок
При выполнении этой команды запускается асинхронное фоновое скачивание оповестительных манифестов для рабочих нагрузок. Если скачивание по-прежнему выполняется по завершении этой команды, оно останавливается. Дополнительные сведения см. в разделе Оповестительные манифесты.
Аргументы
PROJECT | SOLUTION
Проект или решение для упаковки. Это путь к файлу CSPROJ, VBPROJ или FSPROJ, либо к файлу решения или каталогу. Если он не указан, команда ищет текущий каталог для файла решения или проекта.
Параметры
--artifacts-path <ARTIFACTS_DIR>
Все выходные файлы сборки из выполняемой команды будут отправляться в вложенные папки в соответствии с указанным путем, разделенным проектом. Дополнительные сведения см. в разделе "Макет выходных данных артефактов". Доступно с пакета SDK для .NET 8.
-c|--configuration <CONFIGURATION>
Определяет конфигурацию сборки. Если вы разрабатываете пакет SDK для .NET 8 или более позднюю версию, команда использует Release конфигурацию по умолчанию для проектов, для которых targetFramework имеет net8.0 или более позднюю версию. Конфигурация сборки по умолчанию используется Debug для более ранних версий пакета SDK и для более ранних целевых платформ. Вы можете переопределить значение по умолчанию в параметрах проекта или с помощью этого параметра. Дополнительные сведения см. в разделе "Dotnet publish" использует конфигурацию выпуска и "dotnet pack" использует конфигурацию выпуска.
--force
Принудительное разрешение всех зависимостей, даже если последнее восстановление прошло успешно. Указание этого флага дает тот же результат, что удаление файла project.assets.json.
-?|-h|--help
Выводит описание использования команды.
--include-source
Включает пакеты NuGet отладочных символов в дополнение к обычным пакетам NuGet в выходном каталоге. Исходные файлы включены в папку src пакета символов.
--include-symbols
Включает пакеты NuGet отладочных символов в дополнение к обычным пакетам NuGet в выходном каталоге.
--interactive
Позволяет команде остановиться и дождаться, пока пользователь выполнит действие или введет данные. Например, чтобы завершить проверку подлинности. Доступно, начиная с пакета SDK для .NET Core 3.0.
--no-build
Не выполняет сборку проекта перед упаковкой. Он также неявно задает флаг --no-restore.
--no-dependencies
Межпроектные ссылки игнорируются, и восстанавливается только корневой проект.
--no-restore
Не выполняет неявное восстановление при выполнении команды.
--nologo
Скрывает загрузочный баннер или сообщение об авторских правах.
-o|--output <OUTPUT_DIRECTORY>
Собранные пакеты помещаются в указанный каталог.
Пакет SDK для .NET 7.0.200
В пакете SDK 7.0.200, если вы укажете --output параметр при выполнении этой команды в решении, интерфейс командной строки выдает ошибку. Это регрессия и исправлена в версии 7.0.201 и более поздних версий пакета SDK для .NET.
--runtime <RUNTIME_IDENTIFIER>
Задает целевую среду выполнения для восстановления пакетов. Список идентификаторов сред выполнения (RID) см. в каталоге RID.
Указывает, следует ли использовать средство ведения журнала терминала для выходных данных сборки. Значением по умолчанию является autoто, что сначала проверяет среду перед включением ведения журнала терминалов. Среда проверка проверяет, может ли терминал использовать современные выходные функции и не использует перенаправленные стандартные выходные данные перед включением нового средства ведения журнала. onпропускает проверка среды и включает ведение журнала терминалов. offпропускает среду проверка и использует средство ведения журнала консоли по умолчанию.
Средство ведения журнала терминала показывает этап восстановления, за которым следует этап сборки. На каждом этапе в нижней части терминала отображаются строительные проекты. Каждый проект, который создает выходные данные как целевого объекта MSBuild, который в настоящее время создается, так и время, затраченное на этот целевой объект. Эти сведения можно найти, чтобы узнать больше о сборке. После завершения сборки проекта записывается один раздел "сборка завершена", который записывает:
Имя созданного проекта.
Целевая платформа (если она используется с несколькими целевыми объектами).
Состояние этой сборки.
Основные выходные данные этой сборки (которая гиперссылок).
Все диагностика, созданные для этого проекта.
Этот параметр доступен начиная с .NET 8.
-v|--verbosity <LEVEL>
Задает уровень детализации команды. Допустимые значения: q[uiet], m[inimal], n[ormal], d[etailed] и diag[nostic]. Дополнительные сведения см. в разделе LoggerVerbosity.
--version-suffix <VERSION_SUFFIX>
Определяет значение для свойства VersionSuffix MSBuild. Воздействие этого свойства на версию пакета зависит от значений свойств Version и VersionPrefix, как показано в следующей таблице:
Свойства со значениями
Версия пакета
нет
1.0.0
Version
$(Version)
Только VersionPrefix
$(VersionPrefix)
Только VersionSuffix
1.0.0-$(VersionSuffix)
VersionPrefix и VersionSuffix.
$(VersionPrefix)-$(VersionSuffix)
Если вы хотите использовать --version-suffix, укажите VersionPrefix, а не Version, в файле проекта. Например, если параметр VersionPrefix имеет значение 0.1.2, а вы передаете --version-suffix rc.1 в dotnet pack, версия пакета будет иметь значение 0.1.2-rc.1.
Если Version имеет значение, а вы передаете --version-suffix в dotnet pack, то значение, указанное для --version-suffix, игнорируется.
Примеры
Упаковка проекта в текущем каталоге:
Интерфейс командной строки.NET
dotnetpack
Упаковка проекта app1:
Интерфейс командной строки.NET
dotnetpack ~/projects/app1/project.csproj
Упаковка проекта в текущем каталоге; полученные пакеты помещаются в папку nupkgs:
Интерфейс командной строки.NET
dotnetpack --output nupkgs
Упаковка проекта в текущем каталоге в папку nupkgs и пропуск этапа сборки:
Интерфейс командной строки.NET
dotnetpack --no-build --output nupkgs
Если суффикс версии пакета в файле CSPROJ настроен как <VersionSuffix>$(VersionSuffix)</VersionSuffix>, упаковка текущего проекта и обновление версии полученных пакетов с использованием указанного суффикса:
Интерфейс командной строки.NET
dotnetpack --version-suffix"ci-1234"
Устанавливает версию пакета в 2.1.0 с использованием свойства MSBuild PackageVersion:
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.