Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья относится к: ✔️ пакету SDK для .NET 6 и более поздних версий
Имя
dotnet pack — упаковывает код в пакет NuGet.
Synopsis
dotnet pack [<PROJECT>|<SOLUTION>]
[--artifacts-path <ARTIFACTS_DIR>] [-c|--configuration <CONFIGURATION>]
[--disable-build-servers] [--force] [--include-source] [--include-symbols]
[--interactive] [--no-build] [--no-dependencies] [--no-restore] [--nologo]
[-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>]
[-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
[--version-suffix <VERSION_SUFFIX>]
dotnet pack -h|--help
Description
Команда dotnet pack создает проект и создает пакеты NuGet. Результатом этой команды является пакет NuGet (то есть nupkg-файл ).
Если вы хотите создать пакет, содержащий символы отладки, у вас есть два варианта:
-
--include-symbols— он создает пакет символов. -
--include-source— он создает пакет символов с папкойsrcвнутри, содержащей исходные файлы.
Зависимости NuGet упакованного проекта добавляются в nuspec-файл , поэтому они правильно разрешаются при установке пакета. Если упакованный проект содержит ссылки на другие проекты, другие проекты не включаются в пакет. В настоящее время у вас должен быть пакет для каждого проекта, если у вас есть зависимости проекта к проекту.
По умолчанию dotnet pack выполняет сборку проекта. Если вы хотите избежать этого поведения, передайте --no-build этот параметр. Этот параметр часто используется в сценариях сборки непрерывной интеграции (CI), где вы знаете, что код был создан ранее.
Замечание
В некоторых случаях неявная сборка не может выполняться. Это может произойти при GeneratePackageOnBuild установке, чтобы избежать циклической зависимости между целевыми объектами сборки и пакета. Сборка также может завершиться ошибкой, если есть заблокированный файл или другая проблема.
Вы можете предоставить свойства dotnet pack MSBuild команде для процесса упаковки. Дополнительные сведения см. в статье о целевых свойствах пакета NuGet и справочнике по MSBuild Command-Line. В разделе "Примеры" показано, как использовать переключатель MSBuild -p для нескольких различных сценариев.
Замечание
Веб-проекты не упаковываются.
Неявное восстановление
Вам не нужно выполнять команду dotnet restore, так как она выполняется неявно всеми командами, которые требуют восстановления, например dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish и dotnet pack. Чтобы отключить неявное восстановление, используйте параметр --no-restore.
Команду dotnet restore по-прежнему удобно использовать в некоторых сценариях, где необходимо явное восстановление, например в сборках с использованием непрерывной интеграции в Azure DevOps Services или системах сборки, где требуется явно контролировать время восстановления.
Сведения об управлении веб-каналами NuGet см. в документации по dotnet restore.
Эта команда поддерживает параметры dotnet restore при передаче в длинной форме (например, --source). Параметры в краткой форме, например -s, не поддерживаются.
Скачивание манифестов рабочих нагрузок
При выполнении этой команды запускается асинхронное фоновое скачивание оповестительных манифестов для рабочих нагрузок. Если скачивание по-прежнему выполняется по завершении этой команды, оно останавливается. Дополнительные сведения см. в разделе Оповестительные манифесты.
Arguments
PROJECT | SOLUTION
Проект или решение для упаковки. Это либо путь к файлу csproj, vbproj или fsproj, либо к файлу решения или каталогу. Если это не указано, команда выполняет поиск текущего каталога для файла проекта или решения.
Options
-
--artifacts-path <ARTIFACTS_DIR>Все выходные файлы сборки из выполняемой команды будут отправляться в вложенные папки в соответствии с указанным путем, разделенным проектом. Дополнительные сведения см. в макете выходных данных артефактов. Доступно с пакета SDK для .NET 8.
-
-c|--configuration <CONFIGURATION>Определяет конфигурацию сборки. Если вы разрабатываете пакет SDK для .NET 8 или более позднюю версию, команда использует конфигурацию
Releaseпо умолчанию для проектов, для которых targetFramework имеет значениеnet8.0или более поздней версии. Конфигурация сборки по умолчаниюDebugдля более ранних версий пакета SDK и для более ранних целевых платформ. Вы можете переопределить значение по умолчанию в параметрах проекта или с помощью этого параметра. Дополнительные сведения см. в "dotnet publish" использует конфигурацию выпуска и "dotnet pack" использует конфигурацию выпуска. -
--disable-build-serversПринудительно заставляет команду игнорировать все постоянные серверы сборки. Этот параметр предоставляет согласованный способ отключить все использование кэширования сборки, которая заставляет сборку с нуля. Сборка, которая не зависит от кэшей, полезна, когда кэши могут быть повреждены или неверны по какой-то причине. Доступно с пакета SDK для .NET 7.
--forceПринудительное разрешение всех зависимостей, даже если последнее восстановление прошло успешно. Указание этого флага дает тот же результат, что удаление файла project.assets.json.
--include-sourceВключает в себя отладочные символы пакетов NuGet в дополнение к обычным пакетам NuGet в выходном каталоге. Файлы источников включаются в папку
srcв пакете символов.--include-symbolsВключает в себя отладочные символы пакетов NuGet в дополнение к обычным пакетам NuGet в выходном каталоге.
-
--interactiveПозволяет команде остановиться и дождаться, пока пользователь выполнит действие или введет данные. Например, чтобы завершить проверку подлинности.
--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.
-s|--serviceableЗадает флаг, доступный для обслуживания в пакете. Дополнительные сведения см. в блоге .NET: .NET Framework 4.5.1 поддерживает обновления безопасности Майкрософт для библиотек NuGet .NET.
-
--tl:[auto|on|off]Указывает, следует ли использовать средство ведения журнала терминала для выходных данных сборки. Значением по умолчанию является
autoто, что сначала проверяет среду перед включением ведения журнала терминалов. Проверка среды проверяет, что терминал может использовать современные выходные функции и не использует перенаправленные стандартные выходные данные перед включением нового средства ведения журнала.onпропускает проверку среды и включает ведение журнала терминалов.offпропускает проверку среды и использует средство ведения журнала консоли по умолчанию.Средство ведения журнала терминала показывает этап восстановления, за которым следует этап сборки. На каждом этапе в нижней части терминала отображаются строительные проекты. Каждый проект, который создает выходные данные как целевого объекта MSBuild, который в настоящее время создается, так и время, затраченное на этот целевой объект. Эти сведения можно найти, чтобы узнать больше о сборке. После завершения сборки проекта записывается один раздел "сборка завершена", который записывает:
- Имя созданного проекта.
- Целевая платформа (если она используется с несколькими целевыми объектами).
- Состояние этой сборки.
- Основные выходные данные этой сборки (которая гиперссылок).
- Все диагностика, созданные для этого проекта.
Этот параметр доступен начиная с .NET 8.
-
-v|--verbosity <LEVEL>Задает уровень детализации команды. Допустимые значения:
q[uiet],m[inimal],n[ormal],d[etailed]иdiag[nostic]. Дополнительные сведения см. в разделе LoggerVerbosity. --version-suffix <VERSION_SUFFIX>Определяет значение свойства
VersionSuffixMSBuild. Влияние этого свойства на версию пакета зависит от значенийVersionиVersionPrefixсвойств, как показано в следующей таблице:Свойства со значениями Версия пакета None 1.0.0Version$(Version)Только VersionPrefix$(VersionPrefix)Только VersionSuffix1.0.0-$(VersionSuffix)VersionPrefixиVersionSuffix.$(VersionPrefix)-$(VersionSuffix)Если вы хотите использовать
--version-suffix, укажитеVersionPrefixи неVersionв файле проекта. Например, еслиVersionPrefixи0.1.2вы передаете--version-suffix rc.1dotnet pack, версия пакета будет.0.1.2-rc.1Если
Versionимеется значение и вы передаете--version-suffixdotnet pack, указанное для--version-suffixнего значение игнорируется.-
-?|-h|--helpВыводит описание использования команды.
Примеры
Упаковка проекта в текущем каталоге:
dotnet packapp1Упаковка проекта:dotnet pack ~/projects/app1/project.csprojУпаковайте проект в текущем каталоге и поместите полученные пакеты в папку
nupkgs:dotnet pack --output nupkgsУпаковайте проект в текущий каталог
nupkgsв папку и пропустите шаг сборки:dotnet pack --no-build --output nupkgsС помощью суффикса версии проекта, настроенного как
<VersionSuffix>$(VersionSuffix)</VersionSuffix>в CSPROJ-файле , упаковайте текущий проект и обновите полученную версию пакета с заданным суффиксом:dotnet pack --version-suffix "ci-1234"Задайте версию
2.1.0пакета дляPackageVersionсвойства MSBuild:dotnet pack -p:PackageVersion=2.1.0Упаковать проект для конкретной целевой платформы:
dotnet pack -p:TargetFrameworks=net45Упаковайте проект и используйте определенную среду выполнения (Windows) для операции восстановления:
dotnet pack --runtime win-x64Упаковка проекта с помощью nuspec-файла :
dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nugetСведения об использовании
NuspecFileиNuspecBasePathNuspecPropertiesиспользовании см. в следующих ресурсах: