Cambios importantes en .NET 8

Si va a migrar una aplicación a .NET 8, 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 de ruptura como incompatible con el binario, incompatible con el origen o cambio de comportamiento:

  • Binario incompatible: cuando se ejecuta en el nuevo entorno de ejecución o componente, los binarios existentes pueden sufrir un cambio disruptivo en el comportamiento, como fallar al cargar o ejecutar, y, de ser así, requerir la recompilación.

  • No compatible con el origen: cuando se vuelve a compilar con el SDK o componente nuevos o para tener como destino el entorno de ejecución nuevo, el código fuente existente puede requerir cambios de origen para compilarse correctamente.

  • Cambio de comportamiento : el código y los archivos binarios existentes pueden comportarse de forma diferente en tiempo de ejecución. Si el nuevo comportamiento no es deseable, el código existente debe actualizarse y volver a compilarse.

ASP.NET Core

Consulte Cambios importantes en ASP.NET Core 8.

Contenedores

Título Tipo de cambio
paquete "ca-certificates" eliminado de las imágenes de Alpine Binario incompatible
Imágenes de contenedor de Debian actualizadas a Debian 12 Cambio binario incompatible/cambio de comportamiento
El puerto de ASP.NET Core predeterminado ha cambiado a 8080 Cambio de comportamiento
Paquete Kerberos eliminado de las imágenes de Alpine y Debian Binario incompatible
paquete "libintl" quitado de las imágenes de Alpine Cambio de comportamiento
Las etiquetas de contenedor multiplataforma son solo Linux Cambio de comportamiento
Nuevo usuario "app" en imágenes de Linux Cambio de comportamiento

Bibliotecas de Core .NET

Título Tipo de cambio
Nombre de la operación de actividad cuando es NULL Cambio de comportamiento
Comportamiento del método Dispose de AnonymousPipeServerStream Cambio de comportamiento
Obsolescencias de API con identificadores de diagnóstico personalizados No compatible con el origen
Asignación de barra diagonal inversa en rutas de acceso de archivos Unix Cambio de comportamiento
Los métodos Base64.DecodeFromUtf8 omiten el espacio en blanco Cambio de comportamiento
Eliminado el soporte para tipos enum con respaldo en booleanos Cambio de comportamiento
El formato Complex.ToString cambió a <a; b> Cambio de comportamiento
enumeración de la ruta de acceso del directorio actual de Drive Cambio de comportamiento
El método Enumerable.Sum produce una nueva excepción OverflowException para algunas entradas Cambio de comportamiento
FileStream escribe cuando se cierra la canalización Cambio de comportamiento
FindSystemTimeZoneById no devuelve un objeto nuevo Cambio de comportamiento
GC.GetGeneration podría devolver Int32.MaxValue Cambio de comportamiento
Comportamiento de GetFolderPath en Unix Cambio de comportamiento
GetSystemVersion ya no devuelve ImageRuntimeVersion Cambio de comportamiento
Anotaciones que admiten un valor NULL en ITypeDescriptorContext No compatible con el origen
API LDAP no disponibles en .NET Standard o .NET Framework Binario incompatible
Se ha eliminado Console.ReadKey heredado Cambio de comportamiento
Los creadores de métodos generan parámetros con HasDefaultValue establecido en falso Cambio de comportamiento
Los URI de elemento de paquete ahora se comparan sin distinción entre mayúsculas y minúsculas en System.IO.Packaging Cambio de comportamiento
Se respeta ProcessStartInfo.WindowStyle cuando UseShellExecute es falso Cambio de comportamiento
RuntimeIdentifier devuelve la plataforma para la que se construyó el runtime Cambio de comportamiento
Type.GetType produce una excepción para todos los tipos de elementos no válidos Cambio de comportamiento

Criptografía

Título Tipo de cambio Introducido
Tamaño de etiqueta de autenticación de AesGcm en macOS Cambio de comportamiento Versión preliminar 1
RSA.EncryptValue y RSA.DecryptValue están obsoletos No compatible con el origen Versión preliminar 1

Implementación

Título Tipo de cambio
Determinación de los recursos específicos de RID por el host Cambio incompatible binario/comportamental
.NET Monitor solo incluye imágenes sin distribución Cambio de comportamiento
Los paquetes .NET para openSUSE y SLES dependen de OpenSSL 3.x Cambio de comportamiento
StripSymbols tiene true como valor predeterminado Cambio de comportamiento

Entity Framework Core (Marco de trabajo de entidades núcleo)

Consulte Cambios importantes en EF Core 8.

Extensiones

Título Tipo de cambio
ActivatorUtilities.CreateInstance se comporta de forma coherente Cambio de comportamiento
ActivatorUtilities.CreateInstance requiere un proveedor que no sea NULL Cambio de comportamiento
ConfigurationBinder omite silenciosamente elementos de matriz no válidos Cambio de comportamiento
ConfigurationBinder produce un valor no coincidente Cambio de comportamiento
El paquete ConfigurationManager ya no hace referencia a System.Security.Permissions No compatible con el origen
El paquete DirectoryServices ya no hace referencia a System.Security.Permissions No compatible con el origen
Claves vacías añadidas al diccionario por el enlazador de configuración Cambio de comportamiento
FromKeyedServicesAttribute.Key puede ser null No compatible con el origen
HostApplicationBuilderSettings.Args tenido en cuenta por el constructor de HostApplicationBuilder Cambio de comportamiento
ManagementDateTimeConverter.ToDateTime devuelve una hora local Cambio de comportamiento
Cambio en el formato de System.Formats.Cbor DateTimeOffset Cambio de comportamiento

Globalización

Título Tipo de cambio
Los convertidores de fecha y hora respetan el argumento de cultura Cambio de comportamiento
El valor predeterminado de TwoDigitYearMax es 2049 Cambio de comportamiento

Interop

Título Tipo de cambio
CreateObjectFlags.Unwrap solo desencapsula en la instancia de destino Cambio de comportamiento
Los marshalizadores personalizados requieren miembros adicionales No compatible con el origen
Se ha quitado la API IDispatchImplAttribute Binario incompatible
Se quitó el constructor predeterminado público implícito JSFunctionBinding Binario incompatible
Los tipos SafeHandle deben tener un constructor público No compatible con el origen
La resolución de biblioteca nativa de Linux ya no usa netcoredeps Cambio de comportamiento

Redes

Título Tipo de cambio
SendFile produce una excepción NotSupportedException en sockets sin conexión Cambio de comportamiento
Se compara la información de usuario en los URI mailto: Cambio de comportamiento

Reflexión

Título Tipo de cambio
IntPtr ya no se usa para los tipos de puntero de función Cambio de comportamiento

SDK (Sistema de traducción

Título Tipo de cambio
La salida de la consola de la CLI usa UTF-8 Cambio de comportamiento / Incompatible con el código fuente y el binario
La codificación de la consola no es UTF-8 después de la finalización Cambio de comportamiento/Incompatibilidad binaria
El valor predeterminado de los contenedores es usar la etiqueta "latest" Cambio de comportamiento
"dotnet pack" usa la configuración Release Cambio de comportamiento / No compatible con el origen
"dotnet publish" usa la configuración Release Cambio de comportamiento / No compatible con el origen
Salida duplicada de -getItem, -getProperty y -getTargetResult Cambio de comportamiento
Ya no se agrega la directiva using implícita para System.Net.Http Cambio de comportamiento / No compatible con el origen
Eventos de compilación derivados personalizados de MSBuild obsoletos Cambio de comportamiento
MSBuild respeta DOTNET_CLI_UI_LANGUAGE Cambio de comportamiento
Aplicaciones específicas del entorno de ejecución no independientes Fuente/binario incompatible
La opción --arch no implica autocontenido Cambio de comportamiento
"dotnet restore" genera advertencias de vulnerabilidades de seguridad Cambio de comportamiento
"paquete de lista de dotnet" advierte si el origen no proporciona datos de vulnerabilidad Cambio de comportamiento
El SDK usa un gráfico RID más pequeño Cambio de comportamiento / No compatible con el origen
Al establecer DebugSymbols en false, se deshabilita la generación de PDB Cambio de comportamiento
Source Link se ha incluido en el SDK de .NET No compatible con el origen
Es posible que no se use el recorte con .NET Standard o .NET Framework. Cambio de comportamiento
De forma predeterminada los paquetes no incluidos en la lista no se instalan para las herramientas de .NET Cambio de comportamiento
archivo .user importado en compilaciones externas Cambio de comportamiento
Requisitos de la versión para el SDK de .NET 8 No compatible con el origen

Serialización

Título Tipo de cambio
BinaryFormatter deshabilitado para la mayoría de los proyectos Cambio de comportamiento
Los proyectos PublishedTrimmed fallan en la serialización basada en la reflexión Cambio de comportamiento
El deserializador basado en la reflexión resuelve los metadatos diligentemente Cambio de comportamiento

Windows Forms

Título Tipo de cambio
Certificados comprobados antes de cargar imágenes remotas en PictureBox Cambio de comportamiento
DateTimePicker.Text es una cadena vacía Cambio de comportamiento
Se ha quitado DefaultValueAttribute de algunas propiedades Cambio de comportamiento
El constructor ExceptionCollection lanza "ArgumentException" Cambio de comportamiento
Escalado de formularios según AutoScaleMode Cambio de comportamiento
El valor predeterminado de ImageList.ColorDepth es Depth32Bit Cambio de comportamiento
System.Windows.Extensions no hace referencia a System.Drawing.Common No compatible con el origen
TableLayoutStyleCollection lanza ArgumentException Cambio de comportamiento
Los formularios de nivel superior ajustan el tamaño mínimo y máximo según los PPP Cambio de comportamiento
La desactualización de WFDEV002 ahora se considera un error No compatible con el origen

Consulte también