Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O dotnet pack comando, que empacota o código em um pacote NuGet, agora usa a Release configuração em vez da Debug configuração por padrão.
Comportamento anterior
Anteriormente, dotnet pack usava a configuração Debug a menos que a configuração fosse explicitamente especificada ou PackRelease fosse definido para true.
A PackRelease propriedade foi adicionada no .NET 7 como uma solução para essa alteração disruptiva. Anteriormente, você podia definir a DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS variável de ambiente para usar 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 usa 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 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 compactado a menos que a Debug configuração tenha sido especificada explicitamente (por exemplo, usando dotnet pack --configuration Debug.
dotnet pack pode empacotar para vários identificadores de frameworks alvo (TFM) ao mesmo tempo. Se o seu projeto se destina a múltiplas versões e possui valores diferentes de PackRelease para diferentes destinos, pode ocorrer um conflito onde alguns TFMs empacotam a configuração de Release enquanto outros empacotam a configuração de Debug.
Para projetos em uma solução:
dotnet packpode 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 comotruese estiver indefinido. Paradotnet packdeterminar a configuração correta a ser usada, todos os projetos na solução devem concordar com seu valor dePackRelease.Essa alteração pode fazer com que o desempenho de
dotnet packregredir, especialmente para soluções que contêm muitos projetos. Para resolver este problema, foi introduzida uma nova variávelDOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSde ambiente.A
DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONSvariável de ambiente não é mais reconhecida.
Versão introduzida
.NET 8 Visualização 1
Tipo de mudança disruptiva
Essa alteração pode afetar a compatibilidade da fonte e também é uma mudança comportamental.
Motivo da mudança
Na maioria dos casos, ao criar um pacote, você deseja que seu código seja otimizado e pode manter o pacote menor excluindo 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 desativar totalmente o novo comportamento, você pode definir a variável de
DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASEambiente comotrue(ou qualquer outro valor). Esta variável afeta ambosdotnet publishedotnet pack.Para especificar explicitamente a configuração
Debugpara empacotamento, use a opção-cou--configurationcomdotnet pack.Se o pipeline de CI/CD estiver quebrado devido a caminhos de saída hardcoded, atualize os caminhos para
Releaseem vez deDebug, desative o novo comportamento usando a variável de ambienteDOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASEou especifique que a configuraçãoDebugdeve ser usada.Se você estiver empacotando uma solução e ela estiver quebrada porque um ou mais projetos definem explicitamente um valor para
PackRelease, você deve definirPackReleaseexplicitamente comofalseem cada projeto:<PropertyGroup> <PackRelease>false</PackRelease> </PropertyGroup>Se você estiver empacotando uma solução e o desempenho tiver regredido, poderá definir a
DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONSvariável de ambiente comotrue(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 . Esta variável afeta ambosdotnet publishedotnet pack.