команда pack (Интерфейс командной строки NuGet)

Область применения: создание пакета • Поддерживаемые версии: 2.7+

Создает пакет NuGet на основе указанного nuspec или файла проекта. Команда (см. dotnet packкоманды dotnet) и msbuild -t:pack (см. целевые объекты MSBuild) могут использоваться в качестве альтернативных вариантов.

Important

Используйте dotnet pack или msbuild -t:pack для проектов на основе PackageReference . Начиная с NuGet версии 6.5+, команда пакета будет возникать ошибка при попытке упаковать эти типы проектов. Более ранние версии попытаются упаковать, но созданный пакет может быть неверным. В разделе Mono создание пакета из файла проекта не поддерживается. Кроме того, необходимо настроить не локальные пути в .nuspec файле в пути в стиле Unix, так как nuget.exe не преобразует сами имена путей Windows.

Использование

nuget pack <nuspecPath | projectPath> [options] [-Properties ...]

где <nuspecPath> и <projectPath> укажите .nuspec файл проекта соответственно.

Options

  • -BasePath

    Задает базовый путь к файлам, определенным в nuspec-файле .

  • -Build

    Указывает, что перед сборкой пакета необходимо построить проект.

  • -ConfigFile

    Файл конфигурации NuGet для применения. Если не указано, %AppData%\NuGet\NuGet.Config используется (Windows) или ~/.nuget/NuGet/NuGet.Config~/.config/NuGet/NuGet.Config (Mac/Linux).

  • -Deterministic

    (7.9+) Сборка пакетов в детерминированном режиме. Это создает битовые идентичные пакеты для одних и того же входных данных (исходный код, файл проекта, конфигурация сборки), с известной предостережением меток времени. Сведения DeterministicTimestamp о том, как воспроизвести с идентичными датами и временем.

  • -DeterministicTimestamp

    (7.9+) Укажите метку времени, используемую в качестве даты и времени изменения файла для всех файлов, добавленных в пакет NuGet. Это может быть дата и время в формате RFC 3339 (например 1996-12-19T16:39:57-08:00), это может быть число непрыжных секунд с 00:00:00 UTC 1 января 1970 г. (также известное как время Unix), или может быть специальной строкой true (по умолчанию, использовать текущее время часов) или false не изменять время файла при создании детерминированных пакетов. Этот параметр игнорируется, если Deterministic он не включен.

  • -Exclude

    Указывает один или несколько шаблонов подстановочных знаков, которые следует исключить при создании пакета. Чтобы указать несколько шаблонов, повторите флаг -Exclude. См. приведенный ниже пример.

  • -ExcludeEmptyDirectories

    Запрещает включение пустых каталогов при создании пакета.

  • -ForceEnglishOutput

    (3.5+) Принудительно nuget.exe работать с использованием инвариантной, английской культуры.

  • -?|-help

    Отображает сведения о справке для команды.

  • -IncludeReferencedProjects

    Указывает, что встроенный пакет должен включать ссылки на проекты как зависимости или как часть пакета. Если у указанного проекта есть соответствующий файл .nuspec, имеющий то же имя, что и проект, то этот ссылающийся проект добавляется в качестве зависимости. В противном случае указанный проект добавляется как часть пакета.

  • -InstallPackageToOutputPath

    Укажите, должна ли команда подготовить выходной каталог пакета для поддержки общего ресурса в качестве канала.

  • -MinClientVersion

    Задайте атрибут minClientVersion для созданного пакета. Это значение переопределит значение существующего атрибута minClientVersion (если таковые .nuspec имеются) в файле.

  • -MSBuildPath

    (4.0+) Указывает путь MSBuild для использования с командой, принимая приоритет над -MSBuildVersion.

  • -MSBuildVersion

    (3.2+) Указывает версию MSBuild для использования с этой командой. Поддерживаемые значения: 4, 12, 14, 15.1, 15.3, 15.4, 15.5, 15.6, 15.7, 15.8, 15.9. По умолчанию выбирается MSBuild в пути, в противном случае она по умолчанию используется для самой высокой установленной версии MSBuild.

  • -NoDefaultExcludes

    Запрещает исключение по умолчанию файлов и папок пакетов NuGet, начиная с точки, например .svn и .gitignore.

  • -NonInteractive

    Подавляет запросы на ввод или подтверждение пользователя.

  • -NoPackageAnalysis

    Указывает, что пакет не должен выполнять анализ пакетов после сборки пакета.

  • -OutputDirectory

    Указывает папку, в которой хранится созданный пакет. Если папка не указана, используется текущая папка.

  • -OutputFileNamesWithoutVersion

    Укажите, должна ли команда подготовить выходное имя пакета без версии.

  • -PackagesDirectory

    Указывает папку пакетов.

  • -p|-Properties

    Должен отображаться последний в командной строке после других параметров. Указывает список свойств, которые переопределяют значения в файле project; см. раздел "Общие свойства MSBuild Project" для имен свойств. Аргумент "Свойства" — это список пар token=value, разделенных точкой с запятой, где каждое вхождение $token$ в .nuspec файле будет заменено заданным значением. Значения могут быть строками в кавычках. Обратите внимание, что для свойства Configuration по умолчанию используется значение Debug. Чтобы изменить конфигурацию выпуска, используйте -Properties Configuration=Release. Как правило, свойства должны быть одинаковыми, которые использовались во время соответствующей сборки проекта, чтобы избежать потенциально странного поведения.

  • -SolutionDirectory

    Указывает каталог решения.

  • -Suffix

    (3.4.4+) Добавляет суффикс к номеру внутренне созданной версии, обычно используемому для добавления сборки или других идентификаторов предварительной версии. Например, при использовании -suffix nightly будет создан пакет с номером версии, например 1.2.3-nightly. Суффиксы должны начинаться с буквы, чтобы избежать предупреждений, ошибок и потенциальных несовместимости с различными версиями NuGet и диспетчер пакетов NuGet.

  • -SymbolPackageFormat

    При создании пакета символов можно выбрать один snupkg из вариантов.symbols.nupkg

  • -Symbols

    Указывает, что пакет содержит источники и символы. При использовании с файлом .nuspec это создает обычный файл пакета NuGet и соответствующий пакет символов. По умолчанию он создает устаревший пакет символов. Новый рекомендуемый формат для пакетов символов — SNUPKG. См. статью "Создание пакетов символов" (SNUPKG).

  • -Tool

    Указывает, что выходные файлы проекта должны быть помещены в папку tools в пакете.

  • -Verbosity [normal|quiet|detailed]

    Указывает объем сведений, отображаемых в выходных данных: normal (по умолчанию) quietили detailed.

  • -Version

    Переопределяет номер версии из .nuspec файла.

См. также переменные среды

Исключение зависимостей разработки

Некоторые пакеты NuGet полезны в качестве зависимостей разработки, которые помогают создавать собственную библиотеку, но не обязательно требуются в качестве фактических зависимостей пакета.

Команда pack игнорирует package записи, в packages.config которых developmentDependency задан trueатрибут. Эти записи не будут включаться в качестве зависимостей в созданном пакете.

Например, рассмотрим следующий packages.config файл в исходном проекте:

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="jQuery" version="1.5.2" />
    <package id="netfx-Guard" version="1.3.3.2" developmentDependency="true" />
    <package id="microsoft-web-helpers" version="1.15" />
</packages>

Для этого проекта пакет, созданный с помощью nuget pack , будет иметь зависимость jQuery , microsoft-web-helpers но не netfx-Guard.

Подавление предупреждений о пакете

Хотя рекомендуется разрешить все предупреждения NuGet во время операций пакета, в некоторых ситуациях их подавление гарантируется.

Это можно сделать следующим образом:

nuget.exe package.nuspec -Properties NoWarn=NU5104

Примеры

nuget pack

nuget pack foo.nuspec

nuget pack foo.csproj

nuget pack foo.csproj -Properties Configuration=Release

nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version="1.0.5"

# Create a package from project foo.csproj, using MSBuild version 12 to build the project
nuget pack foo.csproj -Build -Symbols -MSBuildVersion 12 -Properties owners=janedoe,xiaop;version="1.0.5"

# Create a package from project foo.nuspec and the corresponding symbol package using the new recommended format .snupkg
nuget pack foo.nuspec -Symbols -SymbolPackageFormat snupkg

nuget pack foo.nuspec -Version 2.1.0

nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5

nuget pack Package.nuspec -exclude "*.exe" -exclude "*.bat"

Замечание

Команда pack для проектов в стиле SDK не поддерживается, используется dotnet pack или msbuild -t:pack для упаковки этих проектов.