Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O comando dotnet pack
, que empacota o código em um pacote NuGet, agora usa a configuração Release
em vez da configuração Debug
por padrão.
Comportamento anterior
Anteriormente, dotnet pack
usava a Debug
configuração, a menos que a configuração fosse especificada explicitamente ou PackRelease
estivesse definida como true
.
A propriedade PackRelease
foi adicionada ao .NET 7 visando essa alteração interruptiva. Anteriormente, você poderia definir a DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
variável de ambiente a ser usada PackRelease
em um projeto que fazia parte de uma solução do Visual Studio.
Novo comportamento
Se você estiver desenvolvendo com o SDK do .NET 8 ou uma versão posterior, dotnet pack
usará a Release
configuração por padrão para todos os projetos. Se você tiver um script de CI/CD, testes ou código em que você tenha codificado Debug
em um caminho de saída, essa alteração poderá interromper seu fluxo de trabalho. Além disso, você não poderá depurar um aplicativo empacotado, a menos que a configuração Debug
seja especificada explicitamente (por exemplo, usando dotnet pack --configuration Debug
.
dotnet pack
pode empacotar para vários TFM (Monikers da Estrutura de Destino) ao mesmo tempo. Se o projeto for direcionado a várias versões e houver valores de PackRelease
diferentes para destinos diferentes, poderá haver um conflito em que alguns TFMs empacotam a configuração Release
e outros empacotam a configuração Debug
.
Para projetos em uma solução:
dotnet pack
pode empacotar todos os projetos em uma solução do Visual Studio se receber um arquivo de solução. Para cada projeto na solução, o valor dePackRelease
é implicitamente definido comotrue
caso esteja indefinido. Para quedotnet pack
determine a configuração correta a ser usada, todos os projetos na solução devem concordar em seu valor dePackRelease
.Essa alteração pode fazer com que o desempenho de
dotnet pack
regredir, especialmente para soluções que contêm muitos projetos. Para resolver isso, uma nova variávelDOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
de ambiente foi introduzida.A
DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
variável de ambiente não é mais reconhecida.
Versão introduzida
.NET 8 versão prévia 1
Tipo de mudança disruptiva
Essa alteração pode afetar a compatibilidade de origem e também é uma alteração comportamental.
Motivo da alteração
Na maioria dos casos, ao criar um pacote, você deseja que seu código seja otimizado e possa manter o pacote menor excluindo as informações de depuração.
A DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
variável de ambiente foi removida, pois o comportamento habilitado agora é o comportamento padrão e o controle granular não é mais necessário.
Ação recomendada
Para desabilitar totalmente o novo comportamento, você pode definir a variável de
DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
ambiente comotrue
(ou qualquer outro valor). Essa variável afeta tantodotnet publish
quantodotnet pack
.Para especificar explicitamente a
Debug
configuração para empacotamento, use a opção-c
ou--configuration
comdotnet pack
.Se o pipeline de CI/CD estiver quebrado devido a caminhos de saída codificados, atualize os caminhos para
Release
em vez deDebug
, desabilite o novo comportamento usando a variável de ambienteDOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE
ou especifique que a configuraçãoDebug
deve ser usada.Se você estiver empacotando uma solução e ela estiver interrompida porque um ou mais projetos definem explicitamente um valor para
PackRelease
, definaPackRelease
explicitamente parafalse
em cada projeto:<PropertyGroup> <PackRelease>false</PackRelease> </PropertyGroup>
Se você estiver empacotando uma solução e o desempenho tiver retrocedido, poderá definir a variável de ambiente
DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
paratrue
(ou qualquer outro valor) para remover a regressão. Se você usar essa variável e qualquer projeto definirPackRelease
, todos os projetos deverão defini-la ou você poderá usar um arquivo Directory.Build.Props. Essa variável afeta tantodotnet publish
quantodotnet pack
.