Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo aplica-se a: ✔️ .NET SDK 6 e versões posteriores
Nome
dotnet pack - Empacota o código em um pacote NuGet.
Sinopse
dotnet pack [<PROJECT>|<SOLUTION>|<NUSPEC>|<FILE>]
[--artifacts-path <ARTIFACTS_DIR>] [-c|--configuration <CONFIGURATION>]
[--disable-build-servers] [--force] [--include-source] [--include-symbols]
[--interactive] [--no-build] [--no-dependencies] [--no-restore] [--nologo]
[-o|--output <OUTPUT_DIRECTORY>] [-p|--property:<PROPERTYNAME>=<VALUE>]
[--runtime <RUNTIME_IDENTIFIER>]
[-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
[--version <VERSION>] [--version-suffix <VERSION_SUFFIX>]
dotnet pack -h|--help
Description
O dotnet pack comando cria o projeto e cria pacotes NuGet. O resultado desse comando é um pacote NuGet (ou seja, um arquivo .nupkg ).
A partir de .NET 10, também podes passar um ficheiro .nuspec ou uma aplicação baseada em ficheiros (.cs) diretamente como argumento. Quando passa um ficheiro .nuspec , dotnet pack cria-se o pacote a partir do ficheiro .nuspec sem precisar de um ficheiro de projeto e sem correr o MSBuild. Quando passa uma aplicação baseada em ficheiros, dotnet pack empacota-a sem um ficheiro de projeto.
Se você quiser gerar um pacote que contenha os símbolos de depuração, você tem duas opções disponíveis:
-
--include-symbols- cria o pacote de símbolos. -
--include-source- Cria o pacote de símbolos com umasrcpasta dentro contendo os arquivos de origem.
As dependências do NuGet do projeto compactado são adicionadas ao arquivo .nuspec , para que sejam resolvidas corretamente quando o pacote for instalado. Se o projeto compactado tiver referências a outros projetos, os outros projetos não serão incluídos no pacote. Atualmente, você deve ter um pacote por projeto se tiver dependências de projeto para projeto.
Por padrão, dotnet pack cria o projeto primeiro. Se você deseja evitar esse comportamento, passe a --no-build opção. Essa opção geralmente é útil em cenários de compilação de Integração Contínua (CI) onde você sabe que o código foi criado anteriormente.
Observação
Em alguns casos, a compilação implícita não pode ser executada. Isso pode ocorrer quando GeneratePackageOnBuild é definido, para evitar uma dependência cíclica entre os destinos de compilação e pacote. A compilação também pode falhar se houver um arquivo bloqueado ou outro problema.
Observação
Os projetos da Web não podem ser empacotados.
Restauração implícita
Você não precisa executar dotnet restore porque ele é executado implicitamente por todos os comandos que exigem uma restauração para ocorrer, como dotnet new, dotnet build, dotnet run, dotnet test, dotnet publishe dotnet pack. Para desativar a restauração implícita, use a --no-restore opção.
O comando dotnet restore continua a ser útil em certos cenários onde a restauração explicitamente faz sentido, como builds de integração contínua em Azure DevOps Services ou em sistemas de build que precisam de controlar explicitamente quando ocorre a restauração.
Para obter informações sobre como gerenciar feeds NuGet, consulte a dotnet restore documentação.
Este comando suporta as dotnet restore opções quando passado na forma longa (por exemplo, --source). Opções de formulário curto, como -s, não são suportadas.
Downloads de manifesto de carga de trabalho
Quando você executa esse comando, ele inicia um download assíncrono em segundo plano de manifestos de publicidade para cargas de trabalho. Se o download ainda estiver em execução quando este comando terminar, o download será interrompido. Para obter mais informações, consulte Manifestos de publicidade.
Arguments
PROJECT | SOLUTION | NUSPEC | FILE
O projeto, solução, ficheiro .nuspec ou aplicação baseada em ficheiros para embalar.
PROJECTé o caminho para um.csprojficheiro ,.vbproj,.fsprojou para um diretório contendo um ficheiro de projeto.SOLUTIONé o caminho para um ficheiro de solução (.slnou.slnxextensão), ou para um diretório contendo um ficheiro de solução.NUSPECé o caminho para um.nuspecficheiro. Disponível a partir do .NET 10.FILEé o caminho para uma aplicação baseada em ficheiros (um ficheiro C# sem um ficheiro de projeto correspondente). Disponível a partir do .NET 10. Para obter mais informações, consulte Criar aplicativos C# baseados em arquivo.Se não for especificado, o comando procura um arquivo de projeto ou solução no diretório atual.
Opções
-
--artifacts-path <ARTIFACTS_DIR>Todos os arquivos de saída de compilação do comando executado irão em subpastas sob o caminho especificado, separados por projeto. Para obter mais informações, consulte Layout de saída de artefatos. Esta opção e o valor fornecido devem ser explicitamente encadeados em qualquer
dotnetcomando que dependa da saída de outrodotnetcomando, por exemplo, ao usardotnet build --no-restoreedotnet publish --no-build. Disponível desde o SDK .NET 8. -
-c|--configuration <CONFIGURATION>Define a configuração de compilação. Se estiveres a desenvolver com o SDK .NET 8 ou uma versão posterior, o comando usa a configuração
Releasepor defeito para projetos cujo TargetFramework está definido paranet8.0ou uma versão posterior. A configuração de compilação padrão éDebugpara versões anteriores do SDK e para estruturas de destino anteriores. Você pode substituir o padrão nas configurações do projeto ou usando essa opção. Para obter mais informações, consulte 'dotnet publish' usa o de configuração Release e 'dotnet pack' usa Release configuration. -
--disable-build-serversForça o comando a ignorar quaisquer servidores de compilação persistentes. Essa opção fornece uma maneira consistente de desabilitar todo o uso do cache de compilação, o que força uma compilação do zero. Uma compilação que não depende de caches é útil quando os caches podem estar corrompidos ou incorretos por algum motivo. Disponível desde o SDK .NET 7.
--forceForça todas as dependências a serem resolvidas, mesmo que a última restauração tenha sido bem-sucedida. Especificar esse sinalizador é o mesmo que excluir o arquivo project.assets.json .
--include-sourceInclui os símbolos de depuração pacotes NuGet, além dos pacotes NuGet regulares no diretório de saída. Os arquivos de código-fonte são incluídos na
srcpasta dentro do pacote de símbolos.--include-symbolsInclui os símbolos de depuração pacotes NuGet, além dos pacotes NuGet regulares no diretório de saída.
-
--interactivePermite que o comando pare e aguarde a entrada ou ação do usuário. Por exemplo, para concluir a autenticação.
--no-buildNão cria o projeto antes de empacotar. Também coloca implicitamente a
--no-restorebandeira.--no-dependenciesIgnora referências de projeto para projeto e restaura apenas o projeto raiz.
--no-restoreNão executa uma restauração implícita ao executar o comando.
--nologoNão exibe o banner de inicialização ou a mensagem de direitos autorais.
-o|--output <OUTPUT_DIRECTORY>Coloca os pacotes compilados no diretório especificado.
.NET 7.0.200 SDK
No SDK 7.0.200, se você especificar a
--outputopção ao executar esse comando em uma solução, a CLI emitirá um erro. Isto é uma regressão e foi corrigido na 7.0.201 e versões posteriores do SDK .NET.
-p|--property:<PROPERTYNAME>=<VALUE>Define uma ou mais propriedades do MSBuild. Ao empacotar diretamente um ficheiro .nuspec , as propriedades são usadas para substituição de tokens no ficheiro .nuspec em vez de como propriedades do MSBuild. Especifique várias propriedades delimitadas por ponto-e-vírgula ou repetindo a opção:
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>Para mais informações, consulte as propriedades do alvo do pacote NuGet e a referência na linha de comandos do MSBuild.
--runtime <RUNTIME_IDENTIFIER>Especifica o tempo de execução de destino para o qual restaurar pacotes. Para obter uma lista de identificadores de tempo de execução (RIDs), consulte o catálogo RID.
-s|--serviceableDefine o sinalizador de manutenção no pacote. Para mais informações, consulte .NET Blog: .NET Framework 4.5.1 suporta atualizações Microsoft Security para .NET NuGet Libraries.
-
--tl:[auto|on|off]Especifica se o Terminal Logger deve ser usado para a saída de compilação. O padrão é
auto, que primeiro verifica o ambiente antes de habilitar o registro em log do terminal. A verificação de ambiente verifica se o terminal é capaz de usar recursos de saída modernos e não está usando uma saída padrão redirecionada antes de ativar o novo registrador.onignora a verificação do ambiente e habilita o registro em log do terminal.offignora a verificação de ambiente e usa o registrador de console padrão.O Terminal Logger mostra a fase de restauração seguida pela fase de compilação. Durante cada fase, os projetos atualmente em construção aparecem na parte inferior do terminal. Cada projeto que está construindo produz tanto a meta do MSBuild que está sendo criada quanto a quantidade de tempo gasto nessa meta. Você pode pesquisar essas informações para saber mais sobre a compilação. Quando um projeto termina de construir, uma única seção "construção concluída" é escrita que captura:
- O nome do projeto construído.
- A estrutura de destino (se multidirecionada).
- O status dessa compilação.
- A saída primária dessa compilação (que é hiperligada).
- Qualquer diagnóstico gerado para esse projeto.
Esta opção está disponível a partir do .NET 8.
-
-v|--verbosity <LEVEL>Define o nível de detalhamento do comando. Os valores permitidos são
q[uiet],m[inimal],n[ormal],d[etailed], ediag[nostic]. Para obter mais informações, consulte LoggerVerbosity. --version <VERSION>A versão do pacote a criar. Ao empacotar um ficheiro .nuspec , sobrepõe-se ao número de versão no ficheiro .nuspec .
Observação
Disponível a partir do .NET 10.
--version-suffix <VERSION_SUFFIX>Define o valor para a
VersionSuffixpropriedade MSBuild. O efeito dessa propriedade na versão do pacote depende dos valores dasVersionpropriedades eVersionPrefix, conforme mostrado na tabela a seguir:Propriedades com valores Versão do pacote Nenhum 1.0.0Version$(Version)VersionPrefixapenas$(VersionPrefix)VersionSuffixapenas1.0.0-$(VersionSuffix)VersionPrefixeVersionSuffix$(VersionPrefix)-$(VersionSuffix)Se você quiser usar
--version-suffix, especifiqueVersionPrefixe nãoVersionno arquivo de projeto. Por exemplo, seVersionPrefixé0.1.2e você passa--version-suffix rc.1paradotnet pack, a versão do pacote será0.1.2-rc.1.Se
Versiontiver um valor e você passar--version-suffixparadotnet pack, o valor especificado para--version-suffixserá ignorado.-
-?|-h|--helpImprime uma descrição de como usar o comando.
Examples
Embale o projeto no diretório atual:
dotnet packEmbale o
app1projeto:dotnet pack ~/projects/app1/project.csprojEmbale o projeto no diretório atual e coloque os
nupkgspacotes resultantes na pasta:dotnet pack --output nupkgsEmpacote o projeto no diretório atual na
nupkgspasta e ignore a etapa de compilação:dotnet pack --no-build --output nupkgsCom o sufixo de versão do projeto configurado como
<VersionSuffix>$(VersionSuffix)</VersionSuffix>no arquivo .csproj , empacote o projeto atual e atualize a versão do pacote resultante com o sufixo fornecido:dotnet pack --version-suffix "ci-1234"Defina a versão do pacote como
2.1.0com aPackageVersionpropriedade MSBuild:dotnet pack -p:PackageVersion=2.1.0Empacote o projeto para uma estrutura de destino específica:
dotnet pack -p:TargetFrameworks=net45Empacotar o projeto e usar um runtime específico (Windows) para a operação de restauro:
dotnet pack --runtime win-x64Embale o projeto usando um ficheiro .nuspec (abordagem baseada em projetos do MSBuild):
dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nugetPara obter informações sobre como usar
NuspecFileo ,NuspecBasePatheNuspecProperties, consulte os seguintes recursos:Embale um ficheiro .nuspec diretamente, sem um ficheiro de projeto (.NET 10 e posteriores):
dotnet pack MyPackage.nuspec --output ./artifacts ```dotnetcli dotnet pack MyPackage.nuspec --version 1.2.3 --output ./artifactsEmpacota um ficheiro .nuspec diretamente e usa substituição de token (.NET 10 e posteriores):
dotnet pack MyPackage.nuspec --property:Version=1.2.3 --property:Configuration=Release --output ./artifacts