Alterações interruptivas no .NET 5

Se você estiver migrando um aplicativo para o .NET 5, 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 criptografia.

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
Os aplicativos ASP.NET Core desserializam números entre aspas ✔️
APIs do AzureAD.UI e do AzureADB2C.UI obsoletas ✔️
Os métodos de serialização BinaryFormatter estão obsoletos ✔️
O recurso no roteamento de ponto de extremidade é HttpContext ✔️
Pacotes de integração do Azure prefixados com Microsoft removidos ✔️
Blazor: Lógica de precedência de rota alterada em aplicativos Blazor ✔️
Blazor: suporte a navegadores atualizado ✔️ ✔️
Blazor: espaço em branco não significativo cortado pelo compilador ✔️
Blazor: os tipos JSObjectReference e JSInProcessObjectReference são internos ✔️
Blazor: estrutura de destino de pacotes NuGet alterada ✔️
Blazor: o recurso ProtectedBrowserStorage foi movido para a estrutura compartilhada ✔️
Blazor: os campos públicos somente leitura RenderTreeFrame agora são propriedades ✔️
Blazor: lógica de validação atualizada para ativos da Web estáticos ✔️
APIs de criptografia sem suporte no navegador ✔️
Extensões: alterações de referência de pacote ✔️
Os tipos Kestrel e IIS BadHttpRequestException estão obsoletos ✔️
Instâncias de HttpClient criadas por códigos de status de inteiro de log IHttpClientFactory ✔️
HttpSys: renegociação de certificado do cliente desabilitada por padrão ✔️
IIS: as cadeias de caracteres de consulta de middleware UrlRewrite são preservadas ✔️
Kestrel: alterações de configuração detectadas por padrão ✔️
Kestrel: versões do protocolo TLS com suporte padrão alteradas ✔️
Kestrel: HTTP/2 desabilitado via TLS em versões incompatíveis do Windows ✔️ ✔️
Kestrel: transporte do Libuv marcado como obsoleto ✔️
Propriedades obsoletas em ConsoleLoggerOptions ✔️
Classe ResourceManagerWithCultureStringLocalizer e membro de interface WithCulture removidos ✔️
APIs do Pubternal removidas ✔️
Construtor obsoleto removido no middleware de localização de solicitação ✔️
Middleware: página de erro do banco de dados marcada como obsoleta ✔️
O middleware do manipulador de exceção gera uma exceção original ✔️ ✔️
ObjectModelValidator chama uma nova sobrecarga de Validate ✔️
Codificação de nome de cookie removida ✔️
Versões de pacote NuGet IdentityModel atualizadas ✔️
SignalR: tipo de opções de protocolo do hub MessagePack alterado ✔️
SignalR: protocolo do hub MessagePack removido ✔️
Métodos UseSignalR e UseConnections removidos ✔️
Tipo de conteúdo CSV alterado para em conformidade com padrões ✔️

Análise de código

Title Compatível com binários Compatível com a origem
Aviso CA1416 ✔️
Aviso CA1417 ✔️
Aviso CA1831 ✔️
Aviso CA2013 ✔️
Aviso CA2014 ✔️
Aviso CA2015 ✔️
Aviso CA2200 ✔️
Aviso CA2247 ✔️

Bibliotecas principais do .NET

Título Compatível com binários Compatível com a origem
Alterações de APIs relacionadas a assembly para publicação de arquivo único ✔️
Os métodos de serialização BinaryFormatter estão obsoletos ✔️
As APIs de segurança de acesso do código estão obsoletas ✔️
CreateCounterSetInstance gera InvalidOperationException ✔️
O ActivityIdFormat padrão é W3C ✔️
Environment.OSVersion retorna a versão correta ✔️
O valor de FrameworkDescription é .NET, não .NET Core ✔️
As APIs do GAC estão obsoletas ✔️
Verificações de IsSupported de intrínsecos de hardware ✔️
IntPtr e UIntPtr implementam IFormattable ✔️
LastIndexOf lida com cadeias de caracteres de pesquisa vazias ✔️
Caminhos de URI com caracteres não ASCII no UNIX ✔️
Obsolescências de API com IDs de diagnóstico não padrão ✔️
Propriedades obsoletas em ConsoleLoggerOptions ✔️
Complexidade de OrderBy.First da LINQ ✔️
Atributos OSPlatform renomeados ou removidos ✔️
Pacote Microsoft.DotNet.PlatformAbstractions removido ✔️
PrincipalPermissionAttribute está obsoleto ✔️
Alterações de nome de parâmetro de versões prévias ✔️
Alterações de nome de parâmetro em assemblies de referência ✔️
As APIs de comunicação remota estão obsoletas ✔️
A ordem da lista de Activity.Tags está invertida ✔️
Os métodos de comparação SSE e SSE2 manipulam NaN ✔️
Thread.Abort está obsoleto ✔️
Reconhecimento de URI de caminhos UNC no UNIX ✔️
Os caminhos do código UTF-7 estão obsoletos ✔️
Alteração de comportamento para Vector2.Lerp e Vector4.Lerp ✔️
Vector<T> lança NotSupportedException ✔️

Criptografia

Título Compatível com binários Compatível com a origem
APIs de criptografia sem suporte no navegador ✔️
Cryptography.OID é somente inicialização ✔️
Conjuntos de criptografia TLS padrão no Linux ✔️
As sobrecargas Create() em abstrações criptográficas estão obsoletas ✔️
Valor de FeedbackSize padrão alterado ✔️

Entity Framework Core

Alterações interruptivas no EF Core 5.0

Globalização

Title Compatível com binários Compatível com a origem
Usar bibliotecas ICU no Windows ✔️
StringInfo e TextElementEnumerator são compatíveis com UAX29 ✔️
Categoria Unicode alterada para caracteres Latin-1 ✔️
Valores TextInfo.ListSeparator alterados ✔️

Interoperabilidade

Title Compatível com binários Compatível com a origem
O suporte para WinRT foi removido ✔️
A conversão de RCW em InterfaceIsIInspectable gera exceção ✔️
Nenhuma investigação de sufixo A/W em plataformas não Windows ✔️

Rede

Título Compatível com binários Compatível com a origem
A manipulação de caminho de cookie está em conformidade com a RFC 6265 ✔️
LocalEndPoint é atualizado após chamar SendToAsync ✔️
MulticastOption.Group não aceita nulo ✔️
Fluxos permitem operações Begin sucessivas ✔️
WinHttpHandler removido do runtime do .NET ✔️

.

Title Compatível com binários Compatível com a origem
Arquivos Directory.Packages.prop importados por padrão ✔️
Erro gerado quando o projeto executável referencia executável incompatível ✔️
FrameworkReference substituído pelo WindowsSdkPackageVersion para o SDK do Windows ✔️
Símbolo de pré-processador de NETCOREAPP3_1 não definido ✔️
OutputType definido como WinExe ✔️
Alteração de comportamento de PublishDepsFilePath ✔️
Alteração de TargetFramework de netcoreapp para net ✔️
Os aplicativos WinForms e WPF usam Microsoft.NET.Sdk ✔️

Segurança

Título Compatível com binários Compatível com a origem
As APIs de segurança de acesso do código estão obsoletas ✔️
PrincipalPermissionAttribute está obsoleto ✔️
Os caminhos do código UTF-7 estão obsoletos ✔️

Serialização

Título Compatível com binários Compatível com a origem
BinaryFormatter.Deserialize reencapsula exceções ✔️
JsonSerializer.Desserialize requer cadeia de caracteres de caractere único ✔️
Os aplicativos ASP.NET Core desserializam números entre aspas ✔️
JsonSerializer.Serialize gera ArgumentNullException ✔️
Construtores não públicos sem parâmetros não usados para desserialização ✔️
As opções são respeitadas ao serializar pares chave-valor ✔️

Windows Forms

Título Compatível com binários Compatível com a origem
O código nativo não pode acessar objetos Windows Forms ✔️
OutputType definido como WinExe ✔️
DataGridView não redefine fontes personalizadas ✔️
Os métodos geram ArgumentException ✔️
Os métodos geram ArgumentNullException ✔️
As propriedades geram ArgumentOutOfRangeException ✔️
TextFormatFlags.ModifyString está obsoleto ✔️
As APIs do DataGridView geram InvalidOperationException ✔️
Os aplicativos WinForms usam Microsoft.NET.Sdk ✔️
Controles de barra de status removidos ✔️

WPF

Title Compatível com binários Compatível com a origem
OutputType definido como WinExe ✔️
Aplicativos WPF usam Microsoft.NET.Sdk ✔️

Confira também