Alterações significativas no .NET 8

Se você estiver migrando um aplicativo para o .NET 8, as alterações recentes listadas aqui podem afetá-lo. As alterações são agrupadas por área de tecnologia, como ASP.NET Core ou Windows Forms.

Este artigo categoriza cada alteração de quebra como binária incompatível ou fonte incompatível, ou como uma mudança comportamental:

  • Binário incompatível - Quando executado em relação ao novo tempo de execução ou componente, os binários existentes podem encontrar uma alteração de quebra no comportamento, como falha ao carregar ou executar e, em caso afirmativo, exigir recompilação.

  • Fonte incompatível - Quando recompilado usando o novo SDK ou componente ou para direcionar o novo tempo de execução, o código-fonte existente pode exigir alterações no código-fonte para compilar com êxito.

  • Mudança comportamental - O código e os binários existentes podem se comportar de forma 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 Fonte incompatível
Conversores personalizados para serialização removidos Mudança comportamental
ISystemClock está obsoleto Fonte incompatível
APIs mínimas: os parâmetros IFormFile exigem verificações antifalsificação Mudança comportamental
O middleware de limitação de taxa requer AddRateLimiter Mudança comportamental
Os eventos de token de segurança retornam um JsonWebToken Mudança comportamental
O padrão TrimMode é completo para projetos do Web SDK Fonte incompatível

Contentores

Título Tipo de alteração
Pacote 'ca-certificates' removido das imagens da Alpine Binário incompatível
Imagens de contêiner Debian atualizadas para Debian 12 Alteração binária incompatível/comportamental
Porta ASP.NET Core padrão alterada para 8080 Mudança comportamental
Pacote Kerberos removido das imagens Alpine e Debian Binário incompatível
Pacote 'libintl' removido das imagens alpinas Mudança comportamental
As tags de contêiner multiplataforma são somente Linux Mudança comportamental
Novo usuário 'app' em imagens Linux Mudança comportamental

Principais bibliotecas .NET

Título Tipo de alteração
Nome da operação de atividade quando nulo Mudança comportamental
Comportamento AnonymousPipeServerStream.Dispose Mudança comportamental
Obsolações de API com IDs de diagnóstico personalizadas Fonte incompatível
Mapeamento de barra invertida em caminhos de arquivo Unix Mudança comportamental
Os métodos Base64.DecodeFromUtf8 ignoram o espaço em branco Mudança comportamental
Suporte do tipo enum apoiado por booleano removido Mudança comportamental
Enumeração do caminho de diretório atual da unidade Mudança comportamental
Enumerable.Sum lança nova OverflowException para algumas entradas Mudança comportamental
FileStream grava quando o pipe é fechado Mudança comportamental
FindSystemTimeZoneById não retorna novo objeto Mudança comportamental
GC. GetGeneration pode retornar Int32.MaxValue Mudança comportamental
Comportamento GetFolderPath no Unix Mudança comportamental
GetSystemVersion não retorna mais ImageRuntimeVersion Mudança comportamental
ITypeDescriptorContext anotações anuláveis Fonte incompatível
Legacy Console.ReadKey removido Mudança comportamental
Os construtores de métodos geram parâmetros com HasDefaultValue definido como false Mudança comportamental
ProcessStartInfo.WindowStyle honrado quando UseShellExecute é falso Mudança comportamental
RuntimeIdentifier retorna a plataforma para a qual o tempo de execução foi criado Mudança comportamental
Type.GetType lança exceção para todos os tipos de elementos inválidos Mudança comportamental

Criptografia

Título Tipo de alteração Introduzido
Tamanho da tag de autenticação AesGcm no macOS Mudança comportamental Pré-visualização 1
RSA. EncryptValue e RSA. DecryptValue obsoleto Fonte incompatível Pré-visualização 1

Implementação

Título Tipo de alteração
O host determina ativos específicos do RID Alteração binária incompatível/comportamental
O .NET Monitor inclui apenas imagens sem distribuição Mudança comportamental
O padrão StripSymbols é true Mudança comportamental

Entity Framework Core

Mudanças significativas no EF Core 8

Extensões

Título Tipo de alteração
ActivatorUtilities.CreateInstance se comporta consistentemente Mudança comportamental
ActivatorUtilities.CreateInstance requer provedor não nulo Mudança comportamental
ConfigurationBinder lança para valor incompatível Mudança comportamental
O pacote ConfigurationManager não faz mais referência a System.Security.Permissions Fonte incompatível
O pacote DirectoryServices não faz mais referência a System.Security.Permissions Fonte incompatível
Teclas vazias adicionadas ao dicionário pelo fichário de configuração Mudança comportamental
HostApplicationBuilderSettings.Args respeitado pelo ctor HostApplicationBuilder Mudança comportamental
ManagementDateTimeConverter.ToDateTime retorna uma hora local Mudança comportamental
Alteração de formatação System.Formats.Cbor DateTimeOffset Mudança comportamental

Globalização

Título Tipo de alteração
Conversores de data e hora honram argumento de cultura Mudança comportamental
O padrão TwoDigitYearMax é 2049 Mudança comportamental

Interoperabilidade

Título Tipo de alteração
CreateObjectFlags.Unwrap apenas desempacota na instância de destino Mudança comportamental
Marshallers personalizados exigem membros adicionais Fonte incompatível
IDispatchImplAttribute API é removido Binário incompatível
JSFunctionBinding implícito construtor padrão público removido Binário incompatível
Os tipos SafeHandle devem ter construtor público Fonte incompatível

Rede

Título Tipo de alteração
SendFile lança NotSupportedException para soquetes sem conexão Mudança comportamental

Reflexão

Título Tipo de alteração
IntPtr não é mais usado para tipos de ponteiro de função Mudança comportamental

SDK

Título Tipo de alteração
A saída do console da CLI usa UTF-8 Mudança comportamental/Fonte e binário incompatível
Codificação de console não UTF-8 após a conclusão Mudança comportamental/Binária incompatível
Contêineres padrão para usar a tag 'mais recente' Mudança comportamental
'dotnet pack' usa a configuração Release Mudança comportamental/Fonte incompatível
'dotnet publish' usa a configuração Release Mudança comportamental/Fonte incompatível
Saída duplicada para -getItem, -getProperty e -getTargetResult Mudança comportamental
Implícito using para System.Net.Http não adicionado mais Mudança comportamental/Fonte incompatível
Eventos de compilação derivados personalizados do MSBuild preteridos Mudança comportamental
MSBuild respeita DOTNET_CLI_UI_LANGUAGE Mudança comportamental
Aplicativos específicos de tempo de execução não autônomos Origem/binário incompatível
--arch option não implica auto-contido Mudança comportamental
'Dotnet Restore' produz avisos de vulnerabilidade de segurança Mudança comportamental
SDK usa um gráfico RID menor Mudança comportamental/Fonte incompatível
Link de origem incluído no SDK do .NET Fonte incompatível
O corte não pode ser usado com o .NET Standard ou o .NET Framework Mudança comportamental
Pacotes não listados não instalados por padrão para ferramentas .NET Mudança comportamental
Arquivo .user importado em compilações externas Mudança comportamental
Requisitos de versão para o SDK do .NET 8 Fonte incompatível

Serialização

Título Tipo de alteração
BinaryFormatter desativado para a maioria dos projetos Mudança comportamental
Projetos PublishedTrimmed falham na serialização baseada em reflexão Mudança comportamental
O desserializador baseado em reflexão resolve metadados ansiosamente Mudança comportamental

Windows Forms

Título Tipo de alteração
Alterações no layout da âncora Mudança comportamental
Certs verificados antes de carregar imagens remotas no PictureBox Mudança comportamental
DefaultValueAttribute removido de algumas propriedades Mudança comportamental
ExceptionCollection ctor lança ArgumentException Mudança comportamental
Os formulários são dimensionados de acordo com o AutoScaleMode Mudança comportamental
O padrão ImageList.ColorDepth é Depth32Bit Mudança comportamental
System.Windows.Extensions não faz referência a System.Drawing.Common Fonte incompatível
TableLayoutStyleCollection lança ArgumentException Mudança comportamental
Os formulários de nível superior dimensionam o tamanho mínimo e máximo para DPI Mudança comportamental
WFDEV002 obsolescência é agora um erro Fonte incompatível

Consulte também