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 como 1.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 e symbols.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 ou detailed.

  • -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.