dotnet packdotnet pack

Эта статья относится к следующему: ✔️ пакет SDK для .NET Core 2.x и более поздних версийThis article applies to: ✔️ .NET Core 2.x SDK and later versions

nameName

dotnet pack — упаковывает код в пакет NuGet.dotnet pack - Packs the code into a NuGet package.

Краткий обзорSynopsis

dotnet pack [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
    [--force] [--include-source] [--include-symbols] [--interactive]
    [--no-build] [--no-dependencies] [--no-restore] [--nologo]
    [-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>]
    [-s|--serviceable] [-v|--verbosity <LEVEL>]
    [--version-suffix <VERSION_SUFFIX>]

dotnet pack -h|--help

ОписаниеDescription

Команда dotnet pack выполняет сборку проекта и создает пакеты NuGet.The dotnet pack command builds the project and creates NuGet packages. Результат выполнения команды — пакет NuGet (то есть файл NUPKG).The result of this command is a NuGet package (that is, a .nupkg file).

Если вы хотите создать пакет, содержащий отладочные символы, доступны два варианта:If you want to generate a package that contains the debug symbols, you have two options available:

  • --include-symbols — создает пакет символов.--include-symbols - it creates the symbols package.
  • --include-source — создает пакет символов с папкой src, содержащей исходные файлы.--include-source - it creates the symbols package with a src folder inside containing the source files.

Зависимости NuGet упакованного проекта добавляются в файл NUSPEC, чтобы их можно было разрешить при установке пакета.NuGet dependencies of the packed project are added to the .nuspec file, so they're properly resolved when the package is installed. Межпроектные ссылки не упаковываются в проекте.Project-to-project references aren't packaged inside the project. Сейчас при наличии межпроектных зависимостей требуется один пакет на каждый проект.Currently, you must have a package per project if you have project-to-project dependencies.

dotnet pack по умолчанию сначала выполняет сборку проекта.By default, dotnet pack builds the project first. Чтобы избежать этого, передайте параметр --no-build.If you wish to avoid this behavior, pass the --no-build option. Этот вариант часто бывает полезен, например в сценариях сборки с непрерывной интеграцией (CI), когда вы знаете, что код был собран недавно.This option is often useful in Continuous Integration (CI) build scenarios where you know the code was previously built.

Примечание

В некоторых случаях выполнить неявную сборку невозможно.In some cases, the implicit build cannot be performed. Это может произойти, если задано свойство GeneratePackageOnBuild, позволяющее избежать циклической зависимости между целевыми объектами сборки и упаковки.This can occur when GeneratePackageOnBuild is set, to avoid a cyclic dependency between build and pack targets. Кроме того, сборка может завершиться ошибкой при наличии заблокированного файла или другой проблемы.The build can also fail if there is a locked file or other issue.

Может предоставлять свойства MSBuild команде dotnet pack для процесса упаковки.You can provide MSBuild properties to the dotnet pack command for the packing process. Дополнительные сведения см. в разделах Свойства метаданных NuGet и Справочник по командной строке MSBuild.For more information, see NuGet metadata properties and the MSBuild Command-Line Reference. В разделе Примеры показано, как использовать параметр -p MSBuild в различных сценариях.The Examples section shows how to use the MSBuild -p switch for a couple of different scenarios.

Веб-проекты по умолчанию не упаковываются.Web projects aren't packable by default. Чтобы переопределить такое поведение по умолчанию, добавьте следующее свойство в файл с расширением .csproj:To override the default behavior, add the following property to your .csproj file:

<PropertyGroup>
   <IsPackable>true</IsPackable>
</PropertyGroup>

Неявное восстановлениеImplicit restore

Вам не нужно выполнять команду dotnet restore, так как она выполняется неявно всеми командами, которые требуют восстановления, например dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish и dotnet pack.You don't have to run dotnet restore because it's run implicitly by all commands that require a restore to occur, such as dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish, and dotnet pack. Чтобы отключить неявное восстановление, используйте параметр --no-restore.To disable implicit restore, use the --no-restore option.

Команду dotnet restore по-прежнему удобно использовать в некоторых сценариях, где необходимо явное восстановление, например в сборках с использованием непрерывной интеграции в Azure DevOps Services или системах сборки, где требуется явно контролировать время восстановления.The dotnet restore command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.

Сведения об управлении веб-каналами NuGet см. в документации по dotnet restore.For information about how to manage NuGet feeds, see the dotnet restore documentation.

Эта команда поддерживает параметры dotnet restore при передаче в длинной форме (например, --source).This command supports the dotnet restore options when passed in the long form (for example, --source). Параметры в краткой форме, например -s, не поддерживаются.Short form options, such as -s, are not supported.

АргументыArguments

PROJECT | SOLUTION

Проект или решение для упаковки.The project or solution to pack. Это путь к файлу .csproj, .vbproj или .fsproj либо файлу решения или каталогу.It's either a path to a csproj file, vbproj file, fsproj file, a solution file, or to a directory. Если он не указан, команда ищет текущий каталог для файла решения или проекта.If not specified, the command searches the current directory for a project or solution file.

ПараметрыOptions

  • -c|--configuration <CONFIGURATION>

    Определяет конфигурацию сборки.Defines the build configuration. По умолчанию для большинства проектов используется Debug, но можно переопределить параметры конфигурации сборки в проекте.The default for most projects is Debug, but you can override the build configuration settings in your project.

  • --force

    Принудительное разрешение всех зависимостей, даже если последнее восстановление прошло успешно.Forces all dependencies to be resolved even if the last restore was successful. Указание этого флага дает тот же результат, что удаление файла project.assets.json.Specifying this flag is the same as deleting the project.assets.json file.

  • -h|--help

    Выводит краткую справку по команде.Prints out a short help for the command.

  • --include-source

    Включает пакеты NuGet отладочных символов в дополнение к обычным пакетам NuGet в выходном каталоге.Includes the debug symbols NuGet packages in addition to the regular NuGet packages in the output directory. Исходные файлы включены в папку src пакета символов.The sources files are included in the src folder within the symbols package.

  • --include-symbols

    Включает пакеты NuGet отладочных символов в дополнение к обычным пакетам NuGet в выходном каталоге.Includes the debug symbols NuGet packages in addition to the regular NuGet packages in the output directory.

  • --interactive

    Позволяет остановить команду и дождаться, пока пользователь введет данные или выполнит действие (например, завершит проверку подлинности).Allows the command to stop and wait for user input or action (for example, to complete authentication). Доступно, начиная с пакета SDK для .NET Core 3.0.Available since .NET Core 3.0 SDK.

  • --no-build

    Не выполняет сборку проекта перед упаковкой.Doesn't build the project before packing. Он также неявно задает флаг --no-restore.It also implicitly sets the --no-restore flag.

  • --no-dependencies

    Межпроектные ссылки игнорируются, и восстанавливается только корневой проект.Ignores project-to-project references and only restores the root project.

  • --no-restore

    Не выполняет неявное восстановление при выполнении команды.Doesn't execute an implicit restore when running the command.

  • --nologo

    Скрывает загрузочный баннер или сообщение об авторских правах.Doesn't display the startup banner or the copyright message. Доступно, начиная с пакета SDK для .NET Core 3.0.Available since .NET Core 3.0 SDK.

  • -o|--output <OUTPUT_DIRECTORY>

    Собранные пакеты помещаются в указанный каталог.Places the built packages in the directory specified.

  • --runtime <RUNTIME_IDENTIFIER>

    Задает целевую среду выполнения для восстановления пакетов.Specifies the target runtime to restore packages for. Список идентификаторов сред выполнения (RID) см. в каталоге RID.For a list of Runtime Identifiers (RIDs), see the RID catalog.

  • -s|--serviceable

    Задает флаг "подлежит обслуживанию" в пакете.Sets the serviceable flag in the package. Дополнительные сведения см. в записи блога о том, что .NET Framework 4.5.1 поддерживает обновления системы безопасности Майкрософт для библиотек .NET NuGet.For more information, see .NET Blog: .NET Framework 4.5.1 Supports Microsoft Security Updates for .NET NuGet Libraries.

  • --version-suffix <VERSION_SUFFIX>

    Определяет значение для свойства $(VersionSuffix) MSBuild в проекте.Defines the value for the $(VersionSuffix) MSBuild property in the project.

  • -v|--verbosity <LEVEL>

    Задает уровень детализации команды.Sets the verbosity level of the command. Допустимые значения: q[uiet], m[inimal], n[ormal], d[etailed] и diag[nostic].Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic].

ПримерыExamples

  • Упаковка проекта в текущем каталоге:Pack the project in the current directory:

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

    dotnet pack ~/projects/app1/project.csproj
    
  • Упаковка проекта в текущем каталоге; полученные пакеты помещаются в папку nupkgs:Pack the project in the current directory and place the resulting packages into the nupkgs folder:

    dotnet pack --output nupkgs
    
  • Упаковка проекта в текущем каталоге в папку nupkgs и пропуск этапа сборки:Pack the project in the current directory into the nupkgs folder and skip the build step:

    dotnet pack --no-build --output nupkgs
    
  • Если суффикс версии пакета в файле CSPROJ настроен как <VersionSuffix>$(VersionSuffix)</VersionSuffix>, упаковка текущего проекта и обновление версии полученных пакетов с использованием указанного суффикса:With the project's version suffix configured as <VersionSuffix>$(VersionSuffix)</VersionSuffix> in the .csproj file, pack the current project and update the resulting package version with the given suffix:

    dotnet pack --version-suffix "ci-1234"
    
  • Устанавливает версию пакета в 2.1.0 с использованием свойства MSBuild PackageVersion:Set the package version to 2.1.0 with the PackageVersion MSBuild property:

    dotnet pack -p:PackageVersion=2.1.0
    
  • Упакуйте проект для требуемой версии .NET Framework:Pack the project for a specific target framework:

    dotnet pack -p:TargetFrameworks=net45
    
  • Упакуйте проект и используйте определенную среду выполнения (Windows 10) для операции восстановления:Pack the project and use a specific runtime (Windows 10) for the restore operation:

    dotnet pack --runtime win10-x64
    
  • Упакуйте проект с помощью NUSPEC-файла:Pack the project using a .nuspec file:

    dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget
    

    Дополнительные сведения об использовании NuspecFile, NuspecBasePath и NuspecProperties см. в следующих документах:For information about how to use NuspecFile, NuspecBasePath, and NuspecProperties, see the following resources: