команда 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
для упаковки этих проектов.