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 publish
agora usa a configuração Release
em vez da configuração Debug
por padrão, se o framework de destino for .NET 8 ou uma versão posterior.
Comportamento anterior
Anteriormente, dotnet publish
usava a Debug
configuração, a menos que a configuração fosse especificada explicitamente ou PublishRelease
estivesse definida como true
.
A propriedade PublishRelease
foi adicionada ao .NET 7 visando essa alteração interruptiva. Anteriormente, você poderia definir a DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
variável de ambiente a ser usada PublishRelease
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 publish
usará a Release
configuração por padrão para projetos que TargetFramework
estão definidos como net8.0
ou em uma versão posterior. 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.
Se o projeto for direcionado a várias versões, o novo comportamento só se aplicará se você especificar uma estrutura de destino do .NET 8 ou posterior ao publicar (por exemplo, usando dotnet publish -f net8.0
).
Para projetos em uma solução:
dotnet publish
pode publicar todos os projetos em uma solução do Visual Studio se for dado um arquivo de solução. Para os projetos de solução destinados ao .NET 8 ou posterior, o valor dePublishRelease
é implicitamente definido comotrue
se estiver indefinido. No entanto, paradotnet publish
determinar a configuração correta a ser usada para a solução, todos os projetos na solução devem concordar com seu valor dePublishRelease
. Se um projeto mais antigo na solução tiverPublishRelease
definido comofalse
, você deverá definir explicitamente a propriedade parafalse
em novos projetos do .NET 8+ também.Essa alteração pode fazer com que o desempenho de
dotnet publish
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_PUBLISH_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 do código-fonte e também é uma alteração comportamental.
Motivo da alteração
Na maioria dos casos, ao publicar, você quer que seu código esteja otimizado e pode manter o aplicativo mais compacto ao excluir as informações de depuração. Os clientes há muito tempo pedem por Release
como configuração padrão para publish
. Além disso, o Visual Studio tem esse comportamento há muitos anos.
A DOTNET_CLI_ENABLE_PUBLISH_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 publicação, use a opção-c
ou--configuration
comdotnet publish
.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 publicando uma solução e ela estiver quebrada, você poderá definir
PublishRelease
paratrue
explicitamente (ou usarfalse
para reverter para o comportamento anterior).<PropertyGroup> <PublishRelease>true</PublishRelease> </PropertyGroup>
Como alternativa, você pode especificar a propriedade em um arquivo Directory.Build.Props . No entanto, se você defini-la como
false
nesse arquivo, ainda precisará definir explicitamente a propriedade comofalse
nos projetos do .NET 8 ou superiores na solução. Da mesma forma, se alguns projetos definirem explicitamente um valor diferente do valor no arquivo Directory.Build.Props , a publicação falhará.Se você estiver publicando uma solução e o desempenho tiver regredido, você poderá definir a variável de
DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS
ambiente comotrue
(ou qualquer outro valor) para remover a regressão. No entanto, se você definir essa variável e sua solução contiver um projeto .NET 8+ e um projeto direcionado ao .NET 7 ou anterior, a publicação falhará até que todos os projetos sejam definidosPublishRelease
. Essa variável afeta tantodotnet publish
quantodotnet pack
.