Cambios importantes en .NET 5

Si va a migrar una aplicación a .NET 5, es posible que le afecten los cambios importantes que se enumeran aquí. Los cambios se agrupan por área tecnológica, como ASP.NET Core o criptografía.

En este artículo se indica si cada cambio importante es compatible con binarios o compatible con el origen:

  • Compatible con binarios: los archivos binarios existentes se cargarán y ejecutarán correctamente sin volver a compilarse y el comportamiento en tiempo de ejecución no cambiará.
  • Compatible con el origen: el código fuente se compilará correctamente sin cambios al dirigirse al nuevo entorno de ejecución o mediante el SDK o componente nuevo.

ASP.NET Core

Título Compatibles con elementos binarios Compatibles con el origen
Las aplicaciones ASP.NET Core deserializan los números entrecomillados ✔️
API de AzureAD.UI y AzureADB2C.UI obsoletas ✔️
Los métodos de serialización BinaryFormatter obsoletos están obsoletos ✔️
El recurso en el enrutamiento de punto de conexión es HttpContext ✔️
los paquetes de integración de Azure con Microsoft como prefijo se han quitado ✔️
Blazor: lógica de precedencia de ruta cambiada en aplicaciones Blazor ✔️
Blazor: compatibilidad con exploradores actualizada ✔️ ✔️
Blazor: espacio en blanco insignificante recortado por el compilador ✔️
Blazor: los tipos JSObjectReference y JSInProcessObjectReference son internal ✔️
Blazor: Plataforma de destino de paquetes NuGet cambiada ✔️
Blazor: La característica ProtectedBrowserStorage se ha movido a una plataforma compartida ✔️
Blazor: los campos públicos RenderTreeFrame de solo lectura ahora son propiedades ✔️
Blazor: Lógica de validación actualizada para los recursos web estáticos ✔️
Las API de criptografía no se admiten en el explorador ✔️
Extensiones: cambios de referencia de paquete ✔️
Los tipos BadHttpRequestException de Kestrel e IIS están obsoletos ✔️
instancias de HttpClient creadas por códigos de estado enteros del registro de IHttpClientFactory ✔️
HttpSys: Deshabilitación predeterminada de la renegociación del certificado de cliente ✔️
IIS: Mantenimiento de las cadenas de consulta de middleware de UrlRewrite ✔️
Kestrel: cambios de configuración detectados de forma predeterminada ✔️
Kestrel: versiones del protocolo TLS admitidas de forma predeterminada cambiadas ✔️
Kestrel: Deshabilitación de HTTP/2 sobre TLS en versiones de Windows incompatibles ✔️ ✔️
Kestrel: transporte de libuv marcado como obsoleto ✔️
Propiedades obsoletas en ConsoleLoggerOptions ✔️
se han eliminado la clase ResourceManagerWithCultureStringLocalizer y el miembro de interfaz WithCulture ✔️
API Pubternal quitadas ✔️
Se ha quitado el constructor obsoleto en el middleware de localización de solicitudes ✔️
Middleware: página de errores de la base de datos marcada como obsoleta ✔️
El middleware del controlador de excepciones produce una excepción original ✔️ ✔️
Llamada a una nueva sobrecarga de Validate por parte de ObjectModelValidator ✔️
Se ha quitado la codificación de nombre de cookie ✔️
Se han actualizado las versiones del paquete NuGet IdentityModel ✔️
SignalR: se ha cambiado el tipo de opciones del protocolo de concentrador de MessagePack ✔️
SignalR: se ha trasladado el protocolo de concentrador MessagePack ✔️
los métodos UseSignalR y UseConnections se han quitado ✔️
tipo de contenido CSV cambiado a compatible con los estándares ✔️

Análisis de código

Título Compatibles con elementos binarios Compatibles con el origen
Advertencia CA1416 ✔️
Advertencia CA1417 ✔️
Advertencia CA1831 ✔️
Advertencia CA2013 ✔️
Advertencia CA2014 ✔️
Advertencia CA2015 ✔️
Advertencia CA2200 ✔️
Advertencia CA2247 ✔️

Bibliotecas de Core .NET

Título Compatibles con elementos binarios Compatibles con el origen
Cambios de API relacionados con ensamblados para la publicación de un solo archivo ✔️
Los métodos de serialización BinaryFormatter obsoletos están obsoletos ✔️
Las API de seguridad de acceso del código están obsoletas ✔️
CreateCounterSetInstance throws InvalidOperationException ✔️
El valor predeterminado de ActivityIdFormat es W3C ✔️
Environment.OSVersion devuelve la versión correcta ✔️
El valor de FrameworkDescription es .NET, no .NET Core ✔️
Las API de GAC están obsoletas ✔️
Comprobaciones IsSupported intrínsecas de hardware ✔️
IntPtr y UIntPtr implementan IFormattable ✔️
LastIndexOf controla cadenas de búsqueda vacías ✔️
Rutas de acceso de URI con caracteres que no son ASCII en UNIX ✔️
Obsolescencias de API con identificadores de diagnóstico no predeterminados ✔️
Propiedades obsoletas en ConsoleLoggerOptions ✔️
Complejidad de LINQ OrderBy.First ✔️
Atributos de OSPlatform que se han cambiado de nombre o se han quitado ✔️
Retirada del paquete Microsoft.DotNet.PlatformAbstractions ✔️
PrincipalPermissionAttribute está obsoleto ✔️
Cambios de nombre de parámetro respecto a las versiones preliminares ✔️
Cambios de nombre de parámetro en ensamblados de referencia ✔️
Las API de comunicación remota están obsoletas ✔️
Se ha invertido el orden de la lista de Activity.Tags ✔️
Los métodos de comparación SSE y SSE2 controlan NaN ✔️
Thread.Abort obsoleto ✔️
Reconocimiento de URI de rutas UNC en UNIX ✔️
Las rutas de acceso al código UTF-7 están obsoletas ✔️
Cambio de comportamiento de Vector2.Lerp y Vector4.Lerp ✔️
Vector<T> inicia la excepción NotSupportedException ✔️

Criptografía

Título Compatibles con elementos binarios Compatibles con el origen
Las API de criptografía no se admiten en el explorador ✔️
Cryptography.Oid es de solo inicialización ✔️
Conjuntos de cifrado TLS predeterminados en Linux ✔️
Las sobrecargas de Create() en abstracciones criptográficas están obsoletas ✔️
Valor FeedbackSize predeterminado cambiado ✔️

Entity Framework Core

Cambios importantes en EF Core 5.0

Globalización

Título Compatibles con elementos binarios Compatibles con el origen
Uso de bibliotecas de ICU en Windows ✔️
StringInfo y TextElementEnumerator son compatibles con UAX29 ✔️
Categoría Unicode modificada para caracteres del alfabeto latino 1 ✔️
Cambio de los valores de TextInfo.ListSeparator ✔️

Interop

Título Compatibles con elementos binarios Compatibles con el origen
Se elimina la compatibilidad con WinRT ✔️
Excepción al convertir un contenedor RCW en InterfaceIsIInspectable ✔️
Exclusión del sondeo del sufijo A/W en plataformas que no son de Windows ✔️

Funciones de red

Título Compatibles con elementos binarios Compatibles con el origen
La administración de rutas de acceso de cookies se ajusta a RFC 6265 ✔️
LocalEndPoint se actualiza después de llamar a SendToAsync ✔️
MulticastOption.Group no acepta NULL ✔️
Las secuencias permiten operaciones Begin sucesivas ✔️
WinHttpHandler quitado del entorno de ejecución de .NET ✔️

SDK

Título Compatibles con elementos binarios Compatibles con el origen
Archivos Directory.Packages.props importados de forma predeterminada ✔️
Error generado cuando el proyecto ejecutable hace referencia a un ejecutable no coincidente ✔️
WindowsSdkPackageVersion reemplaza a FrameworkReference para Windows SDK ✔️
Símbolo de preprocesador de NETCOREAPP3_1 no definido ✔️
OutputType se establece en WinExe ✔️
Cambio de comportamiento de PublishDepsFilePath ✔️
Cambio de TargetFramework de netcoreapp a net ✔️
Uso de Microsoft.NET.Sdk por parte de las aplicaciones de WinForms y WPF ✔️

Seguridad

Título Compatibles con elementos binarios Compatibles con el origen
Las API de seguridad de acceso del código están obsoletas ✔️
PrincipalPermissionAttribute está obsoleto ✔️
Las rutas de acceso al código UTF-7 están obsoletas ✔️

Serialización

Título Compatibles con elementos binarios Compatibles con el origen
BinaryFormatter.Deserialize vuelve a encapsular excepciones ✔️
JsonSerializer.Deserialize requiere una cadena de un solo carácter ✔️
Las aplicaciones ASP.NET Core deserializan los números entrecomillados ✔️
JsonSerializer.Serialize inicia la excepción ArgumentNullException ✔️
Constructores no públicos sin parámetros que no se usan para la deserialización ✔️
Se respetan las opciones al serializar pares clave-valor ✔️

Windows Forms

Título Compatibles con elementos binarios Compatibles con el origen
El código nativo no puede acceder a objetos Windows Forms. ✔️
OutputType se establece en WinExe ✔️
DataGridView no restablece las fuentes personalizadas ✔️
Los métodos inician la excepción ArgumentException ✔️
Los métodos inician la excepción ArgumentNullException ✔️
Las propiedades inician la excepción ArgumentOutOfRangeException ✔️
TextFormatFlags.ModifyString está obsoleto ✔️
Excepción InvalidOperationException por parte de las API de DataGridView ✔️
Uso de Microsoft.NET.Sdk por parte de las aplicaciones de WinForms ✔️
Controles de la barra de estado quitados ✔️

WPF

Título Compatibles con elementos binarios Compatibles con el origen
OutputType se establece en WinExe ✔️
Uso de Microsoft.NET.Sdk por parte de las aplicaciones de WPF ✔️

Consulte también