Alterações interruptivas do .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
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 |
As informações do usuário em mailto: URIs são comparadas |
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
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 |
DateTimePicker.Text é uma cadeia de caracteres vazia | 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 |