Alterações interruptivas no .NET 6

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

Este artigo indica se cada alteração interruptiva é compatível com binários ou compatível com o código-fonte:

  • Compatível com binários – Os binários existentes serão carregados e executados com êxito sem recompilação e o comportamento em tempo de execução não será alterado.
  • Compatível com o código-fonte – O código-fonte será compilado com êxito sem alterações durante o redirecionamento ao novo runtime ou quando um novo SDK ou componente for usado.

ASP.NET Core

Título Compatível com binários Compatível com a origem
ActionResult<T> define StatusCode para 200 ✔️
O método AddDataAnnotationsValidation ficou obsoleto ✔️
Assemblies removidos da estrutura compartilhada do Microsoft.AspNetCore.App ✔️
Blazor: nome do parâmetro alterado no método RequestImageFileAsync ✔️
Blazor: WebEventDescriptor.EventArgsType property replaced
Blazor: Byte array interop ✔️
Changed MessagePack library in @microsoft/signalr-protocol-msgpack ✔️
A propriedade ClientCertificate não dispara mais a renegociação para HttpSys ✔️
Os metadados de EndpointName não são definidos automaticamente ✔️
Identidade: a versão de inicialização padrão da interface do usuário foi alterada
Kestrel: atributos de mensagem de log alterados ✔️
Microsoft.AspNetCore.Http.Features split ✔️
Middleware: middleware de redirecionamento HTTPS gera exceção em portas HTTPS ambíguas ✔️
Middleware: sobrecarga de novo uso ✔️
Renomeações mínimas de API no RC 1
Renomeações mínimas de API no RC 2
O MVC não armazenará em buffer os tipos IAsyncEnumerable ao usar System.Text.Json ✔️
As anotações de tipo de referência anuláveis foram alteradas ✔️
APIs ficaram obsoletas e foram removidas ✔️
O PreserveCompilationContext não é configurado por padrão ✔️
Razor: O compilador não produz mais um assembly Views ✔️
Razor: alterações de ID de registro em log ✔️
Razor: RazorAPIs do mecanismo marcadas como obsoletas ✔️
SignalR: cliente Java atualizado para o RxJava3 ✔️
Os métodos TryParse e BindAsync são validados

Contêineres

Title Compatível com binários Compatível com a origem
Formatação padrão do agente de console em imagens de contêiner ✔️

Para obter informações sobre outras alterações significativas para contêineres no .NET 6, consulte Notas de versão do contêiner do .NET 6.

Bibliotecas principais do .NET

Título Compatível com binários Compatível com a origem
Obsolescências de API com IDs de diagnóstico não padrão ✔️
Alterações em anotações de tipo de referência anuláveis ✔️
Avaliação de cadeia de caracteres condicional em métodos de depuração ✔️
Comportamento de environment.ProcessorCount no Windows ✔️
Comportamento de retorno de chamada do EventSource ✔️ ✔️
File.Replace no Unix gera exceções para corresponder ao Windows ✔️
FileStream bloqueia arquivos com bloqueio compartilhado no Unix ✔️
FileStream não sincroniza mais o deslocamento de arquivo com o sistema operacional
Atualizações de FileStream.Position após a conclusão de ReadAsync ou WriteAsync
Novas IDs de diagnóstico para APIs obsoletas ✔️
Novas sobrecargas de método System.Linq.Queryable ✔️
Versões mais antigas da estrutura removidas do pacote ✔️
Nomes de parâmetros alterados ✔️
Nomes de parâmetros em tipos derivados de fluxo ✔️
Leituras parciais e de bytes zero no DeflateStream, GZipStream e CryptoStream ✔️
Definir o carimbo de data/hora no arquivo somente leitura no Windows ✔️
Precisão da análise de formato numérico padrão ✔️
Membros abstratos estáticos em interfaces ✔️
Sobrecargas de StringBuilder.Append e ordem de avaliação ✔️
APIs de nome forte geram PlatformNotSupportedException ✔️
System.Drawing.Common só é compatível com o Windows
System.Security.SecurityContext está marcado como obsoleto ✔️
Task.FromResult pode retornar singleton ✔️
Exceções sem tratamento de um BackgroundService ✔️

Criptografia

Título Compatível com binários Compatível com a origem
Métodos CreateEncryptor geram exceção de tamanho incorreto de comentários ✔️

Implantação

Título Compatível com binários Compatível com a origem
Caminho do host x86 no Windows 64 bits ✔️ ✔️

Entity Framework Core

Alterações interruptivas no EF Core 6

Extensões

Título Compatível com binários Compatível com a origem
AddProvider verifica se há um provedor não nulo ✔️
FileConfigurationProvider.Load gera InvalidDataException ✔️
Elementos XML repetidos incluem índice ✔️
A resolução de ServiceProvider descartado gera exceção ✔️

Globalização

Title Compatível com binários Compatível com a origem
Criação de cultura e mapeamento de maiúsculas e minúsculas no modo invariável de globalização

Interoperabilidade

Title Compatível com binários Compatível com a origem
Membros abstratos estáticos em interfaces ✔️

Compilador JIT

Title Compatível com binários Compatível com a origem
CCoagir argumentos de chamada de acordo com o ECMA-335 ✔️ ✔️

Rede

Título Compatível com binários Compatível com a origem
Porta removida do SPN para Kerberos e Negotiate ✔️
WebRequest, WebClient e ServicePoint estão obsoletos ✔️

.

Title Compatível com binários Compatível com a origem
-p opção para dotnet run preterida ✔️
O código C# em modelos sem suporte em versões anteriores ✔️ ✔️
Arquivos EditorConfig incluídos implicitamente ✔️
Gerar apphost para macOS ✔️
Gerar erro para arquivos duplicados na saída de publicação ✔️
GetTargetFrameworkProperties e GetNearestTargetFramework removidos do protocolo ProjectReference ✔️
Instalar o local para x64 emulado no ARM64 ✔️
O MSBuild não dá mais suporte à chamada de GetType()
.NET não pode ser instalado em um local personalizado ✔️ ✔️
OutputType não é definido automaticamente como WinExe ✔️
A publicação de ReadyToRun com --no-restore requer alterações ✔️
Arquivo runtimeconfig.dev.json não gerado ✔️
Aviso de RuntimeIdentifier quando autossuficiente não é especificado ✔️
A ferramenta se manifesta na pasta raiz ✔️ ✔️
Requisitos de versão do SDK do .NET 6 ✔️ ✔️
O arquivo .version inclui a versão de build ✔️ ✔️
Gravar assemblies de referência em IntermediateOutputPath ✔️

Serialização

Título Compatível com binários Compatível com a origem
DataContractSerializer retém o sinal ao desserializar -0 ✔️
Formato de serialização padrão para TimeSpan ✔️
Serialização IAsyncEnumerable ✔️
Refatoração da API de geração de origem JSON ✔️
JsonNumberHandlingAttribute nas propriedades da coleção ✔️
Novas sobrecargas do gerador de origem JsonSerializer ✔️

Windows Forms

Título Compatível com binários Compatível com a origem
Os modelos C# usam inicialização de aplicativo ✔️
As propriedades TableLayoutSettings selecionadas geram InvalidEnumArgumentException ✔️
APIs relacionadas a DataGridView agora geram InvalidOperationException ✔️
Os métodos ListViewGroupCollection geram uma nova InvalidOperationException ✔️
Tamanho máximo de texto aumentado para NotifyIcon.Text ✔️
ScaleControl chamado somente quando necessário ✔️
Algumas APIs geram ArgumentNullException ✔️
O TreeNodeCollection.Item gera uma exceção quando o nó é atribuído em outro lugar ✔️

XML e XSLT

Título Compatível com binários Compatível com a origem
Comportamento de XNodeReader.GetAttribute para índice inválido ✔️

Confira também