Alterações interruptivas no .NET 8

Se você estiver migrando um aplicativo para o .NET 8, poderá ser afetado pelas alterações interruptivas listadas aqui. As alterações são agrupadas por área de tecnologia, como ASP.NET Core ou Windows Forms.

Este artigo categoriza cada alteração interruptiva como incompatível binário ou incompatível com a origem ou alteração comportamental:

  • Incompatível binário – Quando executado em relação ao novo runtime ou componente, os binários existentes podem encontrar uma alteração interruptiva no comportamento, como falha ao carregar ou executar e, nesse caso, exigir recompilação.

  • Incompatível com a origem – Quando recompilado usando o novo SDK ou componente ou para direcionar ao novo runtime, o código-fonte existente pode exigir alterações de origem para que seja compilado com êxito.

  • Alteração comportamental – O código e os binários existentes podem se comportar de modo diferente em tempo de execução. Se o novo comportamento for indesejável, o código existente precisará ser atualizado e recompilado.

ASP.NET Core

Título Tipo de alteração
ConcurrencyLimiterMiddleware está obsoleto Incompatível com a origem
Conversores personalizados para serialização foram removidos Alteração de comportamento
ISystemClock está obsoleto Incompatível com a origem
APIs mínimas: os parâmetros IFormFile exigem verificações anti-falsificação Alteração de comportamento
O middleware de limitação de taxa requer AddRateLimiter Alteração de comportamento
Os eventos de token de autenticação retornam um JsonWebToken Alteração de comportamento
O TrimMode usa o padrão completo para projetos do SDK da Web Incompatível com a origem

Contêineres

Título Tipo de alteração
Pacote 'ca-certificates' removido de imagens alpinas Incompatível com binários
Imagens de contêiner do Debian atualizadas para o Debian 12 Incompatibilidade de binário/alteração de comportamento
Porta ASP.NET Core padrão alterada para 8080 Alteração de comportamento
Pacote Kerberos removido das imagens Alpine e Debian Incompatível com binários
Pacote "libintl" removido das imagens do Alpine Alteração de comportamento
As marcas de contêiner de várias plataformas são somente Linux Alteração de comportamento
Novo usuário "app" em imagens do Linux Alteração de comportamento

Bibliotecas principais do .NET

Título Tipo de alteração
Nome da operação de atividade quando nulo Alteração de comportamento
Comportamento AnonymousPipeServerStream.Dispose Alteração de comportamento
Obsolescências de API com IDs de diagnóstico personalizadas Incompatível com a origem
Mapeamento de barra invertida em caminhos de arquivo UNIX Alteração de comportamento
Métodos Base64.DecodeFromUtf8 ignoram espaço em branco Alteração de comportamento
Suporte ao tipo de enumeração com suporte booliano removido Alteração de comportamento
Formato Complex.ToString alterado para <a; b> Alteração de comportamento
Enumeração do caminho do diretório atual do drive Alteração de comportamento
Enumerable.Sum lança novo OverflowException para algumas entradas Alteração de comportamento
Gravações do FileStream quando o pipe é fechado Alteração de comportamento
FindSystemTimeZoneById não retorna um novo objeto Alteração de comportamento
GC.GetGeneration pode retornar Int32.MaxValue Alteração de comportamento
Comportamento GetFolderPath no UNIX Alteração de comportamento
O GetSystemVersion não retorna mais o ImageRuntimeVersion Alteração de comportamento
Anotações anuláveis ITypeDescriptorContext Incompatível com a origem
Console.ReadKey herdado removido Alteração de comportamento
Os construtores de método geram parâmetros com HasDefaultValue definido como false Alteração de comportamento
ProcessStartInfo.WindowStyle honrado quando UseShellExecute é falso Alteração de comportamento
O RuntimeIdentifier retorna a plataforma para a qual o runtime foi criado Alteração de comportamento
Type.GetType gera exceção para todos os tipos de elemento inválidos Alteração de comportamento

Criptografia

Título Tipo de alteração Introduzida
Tamanho da marca de autenticação do AesGcm no macOS Alteração de comportamento Preview 1
RSA.EncryptValue e RSA.DecryptValue obsoletos Incompatível com a origem Preview 1

Implantação

Título Tipo de alteração
O host determina ativos específicos do RID Incompatibilidade de binário/alteração de comportamento
O .NET Monitor inclui apenas imagens sem distribuição Alteração de comportamento
StripSymbols usa true como padrão Alteração de comportamento

Entity Framework Core

Alterações interruptivas no EF Core 8

Extensões

Título Tipo de alteração
ActivatorUtilities.CreateInstance se comporta de forma consistente Alteração de comportamento
ActivatorUtilities.CreateInstance requer um provedor não nulo Alteração de comportamento
ConfigurationBinder é gerado para um valor incompatível Alteração de comportamento
O pacote ConfigurationManager não faz mais referência a System.Security.Permissions Incompatível com a origem
O pacote DirectoryServices não faz mais referência a System.Security.Permissions Incompatível com a origem
Chaves vazias adicionadas ao dicionário pelo fichário de configuração Alteração de comportamento
HostApplicationBuilderSettings.Args respeitado pelo ctor HostApplicationBuilder Alteração de comportamento
ManagementDateTimeConverter.ToDateTime retorna uma hora local Alteração de comportamento
Alteração de formatação de System.Formats.Cbor DateTimeOffset Alteração de comportamento

Globalização

Title Tipo de alteração
Conversores de data e hora respeitam o argumento de cultura Alteração de comportamento
O padrão TwoDigitYearMax é 2049 Alteração de comportamento

Interoperabilidade

Title Tipo de alteração
CreateObjectFlags.Unwrap apenas desembrulha na instância de destino Alteração de comportamento
Os marshallers personalizados exigem membros adicionais Incompatível com a origem
API IDispatchImplAttribute é removida Incompatível com binários
Construtor padrão público implícito JSFunctionBinding removido Incompatível com binários
Os tipos SafeHandle precisam ter um construtor público Incompatível com a origem

Rede

Título Tipo de alteração
SendFile lança NotSupportedException para soquetes sem conexão Alteração de comportamento
As informações do usuário nos mailto: URIs são comparadas Alteração de comportamento

Reflexão

Título Tipo de alteração
IntPtr não é mais usado para tipos de ponteiro de função Alteração de comportamento

.

Title Tipo de alteração
A saída do console da CLI usa UTF-8 Alteração de comportamento/Incompatível com o código-fonte e com binários
Codificação de console não UTF-8 após a conclusão Alteração de comportamento/Incompatibilidade de binário
O padrão dos contêineres é usar a tag 'latest' Alteração de comportamento
O 'dotnet pack' usa a configuração Release Alteração comportamental/Incompatível com a origem
O 'dotnet publish' usa a configuração Release Alteração comportamental/Incompatível com a origem
Saída duplicada para -getItem, -getProperty e -getTargetResult Alteração de comportamento
O using implícito para System.Net.Http não é mais adicionado Alteração comportamental/Incompatível com a origem
Eventos de build derivados personalizados do MSBuild preteridos Alteração de comportamento
O MSBuild respeita DOTNET_CLI_UI_LANGUAGE Alteração de comportamento
Aplicativos específicos de runtime não autônomos Origem/incompatibilidade de binário
A opção --arch não implica auto-contido Alteração de comportamento
A "restauração dotnet" produz avisos de vulnerabilidade de segurança Alteração de comportamento
O SDK usa um grafo RID menor Alteração comportamental/Incompatível com a origem
Definir DebugSymbols como false desabilita a geração de PDB Alteração de comportamento
O Source Link está incluído no SDK do .NET Incompatível com a origem
O corte de linha não pode ser utilizado com o .NET Standard ou o .NET Framework. Alteração de comportamento
Pacotes não listados não instalados por padrão para ferramentas .NET Alteração de comportamento
arquivo .user importado em compilações externas Alteração de comportamento
Requisitos de versão para o SDK do .NET 8 Incompatível com a origem

Serialização

Título Tipo de alteração
BinaryFormatter foi desabilitado para a maioria dos projetos Alteração de comportamento
Falha de serialização baseada em reflexão em projetos PublishedTrimmed Alteração de comportamento
O desserializador baseado em reflexão resolve metadados rapidamente Alteração de comportamento

Windows Forms

Título Tipo de alteração
Alterações de layout de âncora Alteração de comportamento
Certificados verificados antes de carregar imagens remotas na PictureBox Alteração de comportamento
DateTimePicker.Text é uma cadeia de caracteres vazia Alteração de comportamento
DefaultValueAttribute removido de algumas propriedades Alteração de comportamento
O ctor ExceptionCollection gera a ArgumentException Alteração de comportamento
Os formulários são dimensionados de acordo com o AutoScaleMode Alteração de comportamento
O padrão ImageList.ColorDepth é Depth32Bit Alteração de comportamento
System.Windows.Extensions não faz referência a System.Drawing.Common Incompatível com a origem
TableLayoutStyleCollection gera a ArgumentException Alteração de comportamento
Tamanho mínimo e máximo de escala de formulários de nível superior para DPI Alteração de comportamento
A obsolescência de WFDEV002 agora é um erro Incompatível com a origem

Confira também