comando pack (CLI do NuGet)
Aplica-se a: criação de pacotes • Versões suportadas: 2.7 ou superior
Cria um pacote NuGet com base no arquivo .nuspec ou de projeto especificado. O comando dotnet pack
(consulte Comandos dotnet) e msbuild -t:pack
(consulte Destinos do MSBuild) podem ser usados como alternativas.
Importante
Use dotnet pack
ou msbuild -t:pack
para projetos baseados em PackageReference . A partir do NuGet versão 6.5 ou superior, o comando pack terá um erro ao tentar empacotar esses tipos de projetos. Versões anteriores tentariam empacotar, mas o pacote gerado pode não estar correto.
Em Mono, não há suporte para a criação de um pacote a partir de um arquivo de projeto. Você também precisa ajustar caminhos não locais no arquivo .nuspec
para caminhos no estilo Unix, pois o nuget.exe não converte nomes de caminhos do Windows em si.
Uso
nuget pack <nuspecPath | projectPath> [options] [-Properties ...]
em que <nuspecPath>
e <projectPath>
especificam o .nuspec
ou arquivo de projeto, respectivamente.
Opções
-BasePath
Define o caminho base dos arquivos definidos no arquivo nuspec.
-Build
Especifica que o projeto deve ser criado antes de compilar o pacote.
-ConfigFile
O arquivo de configuração do NuGet a ser aplicado. Se não for especificado,
%AppData%\NuGet\NuGet.Config
(Windows),~/.nuget/NuGet/NuGet.Config
ou~/.config/NuGet/NuGet.Config
(Mac/Linux) será usado.-Exclude
Especifica um ou mais padrões curinga a serem excluídos ao criar um pacote. Para especificar mais de um padrão, repita o sinalizador -Exclude. Veja o exemplo abaixo.
-ExcludeEmptyDirectories
Impede a inclusão de diretórios vazios ao criar o pacote.
-ForceEnglishOutput
(3.5 ou superior) Força a execução de nuget.exe usando uma cultura invariável com base em inglês.
-?|-help
Exibe as informações de ajuda para o comando.
-IncludeReferencedProjects
Indica que o pacote compilado deve incluir projetos referenciados como dependências ou como parte do pacote. Se um projeto referenciado tiver um arquivo
.nuspec
correspondente que tenha o mesmo nome do projeto, esse projeto referenciado será adicionado como uma dependência. Caso contrário, o projeto referenciado será adicionado como parte do pacote.-InstallPackageToOutputPath
Especifique se o comando deve preparar o diretório de saída do pacote para oferecer suporte ao compartilhamento como feed.
-MinClientVersion
Defina o atributo minClientVersion para o pacote criado. Esse valor substituirá o valor do atributo minClientVersion existente (se houver) no arquivo
.nuspec
.-MSBuildPath
(4.0 ou superior) Especifica o caminho do MSBuild a ser usado com o comando, tendo precedência sobre
-MSBuildVersion
.-MSBuildVersion
(3.2 ou superior) Especifica a versão do MSBuild a ser usada com esse comando. Os valores suportados são 4, 12, 14, 15.1, 15.3, 15.4, 15.5, 15.6, 15.7, 15.8, 15.9. Por padrão, o MSBuild em seu caminho é selecionado, caso contrário, ele usa, por padrão, a versão mais recente instalada do MSBuild.
-NoDefaultExcludes
Impede a exclusão padrão de arquivos de pacote do NuGet e arquivos e pastas começando com um ponto, como
.svn
e.gitignore
.-NonInteractive
Suprime solicitações de entrada de usuário ou confirmações.
-NoPackageAnalysis
Especifica que o pacote não deve executar a análise de pacote após a compilação do pacote.
-OutputDirectory
Especifica a pasta na qual o pacote criado é armazenado. Se nenhuma pasta for especificada, a pasta atual será usada.
-OutputFileNamesWithoutVersion
Especifique se o comando deve preparar o nome de saída do pacote sem a versão.
-PackagesDirectory
Especifica a pasta de pacotes.
-p|-Properties
Deve aparecer por último na linha de comando depois de outras opções. Especifica uma lista de propriedades que substituem valores no arquivo de projeto; consulte Propriedades comuns do projeto MSBuild para nomes de propriedades. O argumento Propriedades aqui é uma lista de pares de token=valor, separados por ponto e vírgula, em que cada ocorrência de
$token$
no arquivo.nuspec
será substituída pelo valor fornecido. Os valores podem ser cadeias de caracteres entre aspas. Observe que para a propriedade “Configuração”, o padrão é “Depuração”. Para alterar para uma configuração de versão, use-Properties Configuration=Release
. Em geral, as propriedades devem ser as mesmas que foram usadas durante a compilação do projeto correspondente, a fim de evitar comportamentos potencialmente estranhos.-SolutionDirectory
Especifica o diretório da solução.
-Suffix
(3.4.4 ou superior) Acrescenta um sufixo ao número de versão gerado internamente, normalmente usado para anexar compilações ou outros identificadores de pré-lançamento. Por exemplo, usar
-suffix nightly
criará um pacote com um número de versão como1.2.3-nightly
. Os sufixos devem começar com uma letra para evitar avisos, erros e possíveis incompatibilidades com diferentes versões do NuGet e do Gerenciador de Pacotes do NuGet.-SymbolPackageFormat
Ao criar um pacote de símbolos, permite escolher entre o formato
snupkg
esymbols.nupkg
.-Symbols
Especifica que o pacote contém fontes e símbolos. Quando usado com um arquivo
.nuspec
, isso cria um arquivo de pacote NuGet regular e o pacote de símbolos correspondente. Por padrão, ele cria um pacote de símbolos herdados. O novo formato recomendado para pacotes de símbolos é .snupkg. Veja Criando pacotes de símbolos (.snupkg).-Tool
Especifica que os arquivos de saída do projeto devem ser colocados na pasta
tools
no pacote.-Verbosity [normal|quiet|detailed]
Especifica a quantidade de detalhes exibida na saída:
normal
(o padrão),quiet
oudetailed
.-Version
Substitui o número de versão do arquivo
.nuspec
.
Confira também Variáveis de ambiente
Excluir dependências de desenvolvimento
Alguns pacotes do NuGet são úteis como dependências de desenvolvimento, que ajudam você a criar sua própria biblioteca, mas não são necessariamente essenciais como dependências reais do pacote.
O comando pack
ignorará as entradas package
em packages.config
com o atributo developmentDependency
definido como true
. Essas entradas não serão incluídas como dependências no pacote criado.
Por exemplo, considere o seguinte arquivo packages.config
no projeto de origem:
<?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>
Para este projeto, o pacote criado por nuget pack
terá uma dependência em jQuery
e microsoft-web-helpers
, mas não em netfx-Guard
.
Suprimir avisos de embalagem
Embora seja recomendável que você resolva todos os avisos do NuGet durante as operações de empacotar, em determinadas situações sua supressão é justificada.
Você pode fazer isso da seguinte maneira:
nuget.exe pack package.nuspec -Properties NoWarn=NU5104
Exemplos
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"
Observação
O comando pack
para projetos no estilo SDK não é suportado, use dotnet pack
ou msbuild -t:pack
para empacotar esses projetos.