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


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

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

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

Внимание

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

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

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

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

Параметры

  • -BasePath

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

  • -Build

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

  • -ConfigFile

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

  • -Exclude

    Указывает один или несколько шаблонов wild карта, которые следует исключить при создании пакета. Чтобы указать несколько шаблонов, повторите флаг -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

    Должен отображаться последний в командной строке после других параметров. Задает список свойств, переопределенных значений в файле проекта; См . общие свойства проекта MSBuild для имен свойств. Аргумент Properties здесь представляет собой список пар 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 pack 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 для упаковки этих проектов.