Partilhar via


Alterações significativas no .NET 9

Se você estiver migrando um aplicativo para o .NET 9, 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 significativa como binária incompatível ou fonte incompatível, ou como uma mudança comportamental:

  • Binário incompatível - Quando executados no novo ambiente de execução ou componente, os binários existentes podem encontrar uma alteração significativa no comportamento, como falha ao carregar ou executar, e, nesses casos, 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 - Código e binários existentes podem comportar-se 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
DefaultKeyResolution.ShouldGenerateNewKey significado alterado Mudança comportamental
Dev cert export não cria mais pasta Mudança comportamental
Middleware de cabeçalhos encaminhados ignora cabeçalhos X-Forwarded-* de proxies desconhecidos Mudança comportamental
O HostBuilder habilita ValidateOnBuild/ValidateScopes no ambiente de desenvolvimento Mudança comportamental
APIs Legacy Mono e Emscripten não exportadas para namespace global Fonte incompatível
Tipos de middleware com vários construtores Mudança comportamental

Contentores

Título Tipo de alteração Versão introduzida
As imagens de contêiner não instalam mais o zlib Mudança comportamental Pré-visualização 7
Imagens do .NET Monitor simplificadas para tags apenas de versão Mudança comportamental Pré-visualização 5

Principais bibliotecas .NET

Título Tipo de alteração Versão introduzida
Adicionar um ZipArchiveEntry com o CompressionLevel define os sinalizadores de bits de uso geral no cabeçalho do diretório central do ZIP Mudança comportamental Pré-visualização 5
Suporte de UnsafeAccessor alterado para genéricos não abertos Mudança comportamental Pré-visualização 6
Obsolescências de APIs com IDs de diagnóstico personalizados Fonte incompatível (Múltiplo)
Resolução de sobrecarga ambígua que afeta operadores implícitos de StringValues Fonte incompatível disponibilidade geral
Comprimento máximo do BigInteger Mudança comportamental Pré-visualização 6
BinaryReader.GetString() retorna "\uFFFD" em sequências malformadas Mudança comportamental Pré-visualização 7
A resolução de sobrecarga de C# prefere sobrecargas de tipo de espaço params Fonte incompatível
Não é permitido criar um tipo de matriz de System.Void Mudança comportamental Pré-visualização 1
Padrão Equals() e GetHashCode() lançar para tipos marcados com InlineArrayAttribute Mudança comportamental Pré-visualização 6
EnumConverter valida tipos registrados para ser enum Mudança comportamental Pré-visualização 7
FromKeyedServicesAttribute não injeta mais parâmetro sem chave Mudança comportamental RC 1
A chamada de retorno inicial do IncrementingPollingCounter é assíncrona Mudança comportamental RC 1
Aplica-se o limite de tamanho da estrutura de matriz embutida Mudança comportamental Pré-visualização 1
InMemoryDirectoryInfo adiciona rootDir aos ficheiros Mudança comportamental Pré-visualização 1
Novas sobrecargas TimeSpan.From*() que utilizam números inteiros Fonte incompatível Pré-visualização 3
Nova versão de alguns pacotes OOB Fonte incompatível Pré-visualização 5
RuntimeHelpers.GetSubArray retorna tipo diferente Mudança comportamental Pré-visualização 1
Sobrecarga da função String.Trim(params ReadOnlySpan<char>) removida Incompatibilidade entre origem e binário disponibilidade geral
Suporte para variáveis de ambiente vazio Mudança comportamental Pré-visualização 6
Nomes de entrada e comentários de ZipArchive respeitam o sinalizador UTF8 Mudança comportamental RC 1

Criptografia

Título Tipo de alteração Versão introduzida
APIs removidas de System.Security.Cryptography.Pkcs netstandard2.0 Fonte incompatível disponibilidade geral
SafeEvpPKeyHandle.DuplicateHandle aumenta a contagem de referências do identificador Mudança comportamental Pré-visualização 7
Alguns construtores de X509Certificate2 e X509Certificate estão obsoletos Fonte incompatível Pré-visualização 7
Tempo de vida da chave privada do Windows simplificado Mudança comportamental Pré-visualização 7

Implementação

Título Tipo de alteração Versão introduzida
Pacotes preteridos de tempo de execução MonoVM para desktop Windows/macOS/Linux Fonte incompatível Pré-visualização 7

Núcleo do Entity Framework

Mudanças significativas no EF Core 9

Interoperabilidade

Título Tipo de alteração Versão introduzida
CET suportado por padrão Binário incompatível Pré-visualização 6

compilador JIT

Título Tipo de alteração Versão introduzida
As conversões de ponto flutuante para inteiro estão a saturar Mudança comportamental Pré-visualização 4
Algumas APIs SVE removidas Fonte incompatível RC 2

Rede

Título Tipo de alteração Versão introduzida
Obsolescências da API Fonte incompatível Pré-visualização 6
Relatório de métricas do HttpClient incondicionalmenteserver.port Mudança comportamental Pré-visualização 7
O HttpClientFactory, por padrão, ofusca os valores dos cabeçalhos no registo Mudança comportamental RC 1
HttpClientFactory usa SocketsHttpHandler como manipulador primário Mudança comportamental Pré-visualização 6
HttpListenerRequest.UserAgent é anulável Fonte incompatível Pré-visualização 1
Editação de consultas URI em eventos do HttpClient EventSource Mudança comportamental Pré-visualização 7
Ocultação de consultas URI nos logs de IHttpClientFactory Mudança comportamental Pré-visualização 7

SDK e MSBuild

Título Tipo de alteração Versão introduzida
dotnet sln add não permite nomes de arquivo inválidos Mudança comportamental 9.0.2xx
dotnet watch incompatível com Hot Reload para estruturas antigas Mudança comportamental RC 1
dotnet workload comandos alteram a saída Mudança comportamental Pré-visualização 1
installer Versão do repositório não mais documentada Mudança comportamental Pré-visualização 5
Manipulação de recursos de cultura personalizada do MSBuild Mudança comportamental 9.0.200/9.0.300
Novo RID padrão usado quando direcionado ao .NET Framework Fonte incompatível disponibilidade geral
Terminal Logger é padrão Mudança comportamental Pré-visualização 1
Requisitos de versão para o SDK do .NET 9 Fonte incompatível disponibilidade geral
Emitido um aviso para a versão alvo .NET Standard 1.x Fonte incompatível Pré-visualização 6
Aviso emitido para o alvo .NET 7 Fonte incompatível disponibilidade geral

Serialização

Título Tipo de alteração Versão introduzida
BinaryFormatter sempre lança Mudança comportamental Pré-visualização 6
Propriedades Nullable JsonDocument são desserializadas para JsonValueKind.Null Mudança comportamental Pré-visualização 1
O leitor de metadados do System.Text.Json agora desscapa os nomes das propriedades de metadados Mudança comportamental disponibilidade geral

Windows Forms

Título Tipo de alteração Versão introduzida
BindingSource.SortDescriptions não retorna nulo Mudança comportamental Pré-visualização 1
Alterações nas anotações de anulabilidade Fonte incompatível Pré-visualização 1
ComponentDesigner.Initialize lança ArgumentNullException Mudança comportamental Pré-visualização 1
DataGridViewRowAccessibleObject.Name índice da linha inicial Mudança comportamental Pré-visualização 1
O suporte ao IMsoComponent é de adesão opcional Mudança comportamental Pré-visualização 2
Novos analisadores de segurança Fonte incompatível RC 1
Nenhuma exceção se DataGridView for null Mudança comportamental Pré-visualização 1
PictureBox gera exceções do HttpClient Mudança comportamental Pré-visualização 6
StatusStrip usa um renderizador padrão diferente Mudança comportamental disponibilidade geral

WPF

Título Tipo de alteração Versão introduzida
GetXmlNamespaceMaps Mudança de tipo Mudança comportamental/Fonte incompatível Pré-visualização 3

Consulte também