Поделиться через


пакет dotnet

Эта статья относится к: ✔️ пакету 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>

    Определяет значение свойства VersionSuffix MSBuild. Влияние этого свойства на версию пакета зависит от значений Version и VersionPrefix свойств, как показано в следующей таблице:

    Свойства со значениями Версия пакета
    None 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.1dotnet pack, версия пакета будет.0.1.2-rc.1

    Если Version имеется значение и вы передаете--version-suffixdotnet pack, указанное для --version-suffix него значение игнорируется.

  • -?|-h|--help

    Выводит описание использования команды.

Примеры

  • Упаковка проекта в текущем каталоге:

    dotnet pack
    
  • app1 Упаковка проекта:

    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использовании см. в следующих ресурсах: