Cambios importantes en .NET 6

Si va a migrar una aplicación a .NET 6, 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 Windows Forms.

En este artículo se clasifica cada cambio importante como no compatible con el binario o no compatible con el origen:

  • No compatible con el binario: los binarios existentes pueden detectar un cambio importante en el comportamiento, como errores de carga o ejecución, o un comportamiento en tiempo de ejecución diferente.
  • No compatible con el origen: el código fuente puede detectar un cambio importante en el comportamiento al dirigirse al nuevo runtime o usar el nuevo SDK o componente. Los cambios de comportamiento pueden incluir errores de compilación o un comportamiento en tiempo de ejecución diferente.

Nota:

Este artículo sigue en desarrollo. No es una lista completa de los cambios importantes en .NET 6. Para consultar los cambios importantes que todavía están pendientes de publicación, vea Problemas de .NET.

ASP.NET Core

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
ActionResult<T> establece StatusCode en 200 ✔️
El método AddDataAnnotationsValidation se ha establecido como obsoleto ✔️
Se han quitado los ensamblados del marco compartido d Microsoft.AspNetCore.App ✔️
Blazor: se ha cambiado el nombre de parámetro en el método RequestImageFileAsync. ✔️ Versión preliminar 1
Blazor: se ha reemplazado la propiedad WebEventDescriptor.EventArgsType.
Blazor: interoperabilidad de matriz de bytes ✔️ Versión preliminar 6
Changed MessagePack library in @microsoft/signalr-protocol-msgpack ✔️
La propiedad ClientCertificate ya no desencadena la renegociación de HttpSys ✔️
Metadatos de EndpointName no establecidos automáticamente ✔️ RC 2
Identidad: se ha cambiado la versión de Bootstrap predeterminada de la interfaz de usuario
Kestrel: atributos de mensaje de registro modificados ✔️
División de Microsoft.AspNetCore.Http.Features ✔️
Middleware: El middleware de redireccionamiento de HTTPS inicia una excepción en puertos HTTPS ambiguos ✔️
Middleware: nueva sobrecarga de uso ✔️ Versión preliminar 4
Cambios mínimos de nombre de API en RC 1 RC 1
Cambios mínimos de nombre de API en RC 2 RC 2
MVC no almacena en búfer los tipos IAsyncEnumerable al usar System.Text.Json ✔️ Versión preliminar 4
Las anotaciones en los tipos de referencia que aceptan valores NULL han cambiado. ✔️
API obsoletas y quitadas ✔️ Versión preliminar 1
La propiedad PreserveCompilationContext no está configurada de forma predeterminada ✔️
Razor: el compilador ya no genera un ensamblado de Vistas ✔️ Versión preliminar 3
Razor: cambios de identificador de registro ✔️ RC1
Razor: RazorAPI de Engine marcadas como obsoletas ✔️ Versión preliminar 1
SignalR: el cliente de Java se ha actualizado a RxJava3 ✔️ Versión preliminar 4
Se validan los métodos TryParse y BindAsync RC 2

Contenedores

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
Formato de registrador de consola predeterminado en imágenes de contenedor ✔️ Mantenimiento 6.0.6

Para obtener información sobre otros cambios importantes en los contenedores de .NET 6, vea Notas de la versión de los contenedores de .NET 6.

Bibliotecas de Core .NET

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
Obsolescencias de API con identificadores de diagnóstico no predeterminados ✔️ Versión preliminar 1
Cambios en las anotaciones de tipos de referencia que aceptan valores NULL ✔️ Versión preliminar 1-2
Evaluación condicional de cadenas en métodos de depuración ✔️ RC 1
Comportamiento de Environment.ProcessorCount en Windows ✔️ Versión preliminar 2
Excepciones de File.Replace en Unix para que coincidan con Windows ✔️ Versión preliminar 7
FileStream bloquea archivos con un bloqueo compartido en Unix ✔️ Versión preliminar 1
FileStream ya no sincroniza el desplazamiento de archivo con el sistema operativo Versión preliminar 4
FileStream.Position se actualiza una vez completados ReadAsync o WriteAsync Versión preliminar 4
Nuevos id. de diagnóstico para API obsoletas ✔️ Versión preliminar 5
Nueva anotación que admite un valor NULL en AssociatedMetadataTypeTypeDescriptionProvider ✔️ RC 2
Nuevas sobrecargas del método System.Linq.Queryable ✔️ Versión preliminar 3-4
Versiones anteriores de un marco eliminadas de paquete ✔️ Versión preliminar 5
Nombres de parámetro modificados ✔️ Versión preliminar 1
Nombres de parámetros en tipos derivados de Stream ✔️ Versión preliminar 1
Lecturas parciales y de cero bytes en DeflateStream, GZipStream y CryptoStream ✔️ Versión preliminar 6
Establecimiento de la marca de tiempo en un archivo de solo lectura en Windows ✔️ Mantenimiento 6.0.2
Precisión del análisis de formato numérico estándar ✔️ Versión preliminar 2
Miembros abstractos estáticos en interfaces ✔️ Versión preliminar 7
Sobrecargas de StringBuilder.Append y orden de evaluación ✔️ RC 1
Las API de nombre seguro inician PlatformNotSupportedException ✔️ Versión preliminar 4
System.Drawing.Common solo se admite en Windows Versión preliminar 7
System.Security.SecurityContext está marcado como obsoleto ✔️ RC 1
Task.FromResult puede devolver singleton ✔️ Versión preliminar 1
Excepciones no controladas de una instancia de BackgroundService ✔️ Versión preliminar 4

Criptografía

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
Los métodos CreateEncryptor inician una excepción para un tamaño de comentarios incorrecto ✔️ Versión preliminar 7

Implementación

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
Ruta de acceso de host x86 en Windows de 64 bits ✔️ ✔️ Versión de mantenimiento

Entity Framework Core

Cambios importantes en EF Core 6

Extensiones

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
AddProvider comprueba si hay proveedores que no son NULL ✔️ RC 1
FileConfigurationProvider.Load genera una excepción InvalidDataException ✔️ RC 1
La resolución de un ServiceProvider desechado genera una excepción ✔️ RC 1

Globalización

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
Creación de referencia cultural y asignación de casos en el modo invariable de globalización Versión preliminar 7

Interop

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
Miembros abstractos estáticos en interfaces ✔️ Versión preliminar 7

Compilador JIT

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
Argumentos de llamada de conversión según ECMA-335 ✔️ ✔️ Versión preliminar 1

Funciones de red

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
Se ha quitado el puerto del SPN para Kerberos y Negotiate ✔️ RC 1
WebRequest, WebClient y ServicePoint están obsoletas ✔️ Versión preliminar 1

SDK

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
La opción -p para dotnet run está en desuso ✔️ Versión preliminar 6
Código de C# en plantillas no admitido por versiones anteriores ✔️ ✔️ Versión preliminar 7
Archivos EditorConfig incluidos implícitamente ✔️
Generación de apphost para macOS ✔️ Versión preliminar 6
Generación de un error para archivos duplicados en la salida de la publicación ✔️ Versión preliminar 1
GetTargetFrameworkProperties y GetNearestTargetFramework eliminados del protocolo ProjectReference ✔️ Versión preliminar 1
Ubicación de instalación de x64 emulado en Arm64 ✔️ RC 2
MSBuild ya no admite la llamada a GetType() RC 1
OutputType no se establece automáticamente en WinExe ✔️ RC 1
La publicación de ReadyToRun con --no-restore requiere cambios ✔️ 6.0.100
runtimeconfig.dev.json file not generated ✔️ 6.0.100
Advertencia de RuntimeIdentifier si no se especifica la propiedad independiente ✔️ RC 1
Requisitos de versión para el SDK de .NET 6 ✔️ ✔️ 6.0.300
Escritura de ensamblados de referencia en IntermediateOutputPath ✔️ 6.0.200

Serialización

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
Formato de serialización predeterminado para TimeSpan ✔️ Mantenimiento 6.0.2
Serialización IAsyncEnumerable ✔️ Versión preliminar 4
Refactorización de la API de generación de origen JSON ✔️ RC 2
JsonNumberHandlingAttribute en las propiedades de colección ✔️ RC 1
Nuevas sobrecargas del generador de origen JsonSerializer ✔️ Versión preliminar 6

Windows Forms

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
Las plantillas de C# usan el arranque de aplicación ✔️ RC 1
Ciertas propiedades de TableLayoutSettings producen la excepción InvalidEnumArgumentException ✔️ Versión preliminar 1
Excepción InvalidOperationException por parte de las API relacionadas con DataGridView ✔️ Versión preliminar 4
Los métodos ListViewGroupCollection inician una nueva excepción InvalidOperationException ✔️ RC 2
Longitud máxima de texto de NotifyIcon.Text aumentada ✔️ Versión preliminar 1
ScaleControl solo se llama cuando es necesario ✔️ Mantenimiento 6.0.101
Algunas API inician la excepción ArgumentNullException ✔️ Versión preliminar 1-4
TreeNodeCollection.Item produce una excepción si el nodo se asigna en otro lugar. ✔️ Versión preliminar 1

XML y XSLT

Título Compatibles con elementos binarios Compatibles con el origen Inclusión
Cambio de nulabilidad de XmlDocument.XmlResolver ✔️ RC 1
Comportamiento de XNodeReader.GetAttribute para un índice no válido ✔️ Versión preliminar 2