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 importante como no compatible con el binario, no compatible con el origen o cambio importante:

  • No compatible con el binario: cuando se ejecuta en el entorno de ejecución o componente nuevos, los archivos binarios existentes pueden enfrentarse a un cambio importante en el comportamiento, como un error 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

Título Tipo de cambio
ConcurrencyLimiterMiddleware está obsoleto No compatible con el origen
Eliminación de convertidores personalizados para serialización Cambio de comportamiento
ISystemClock está obsoleto No compatible con el origen
API mínimas: los parámetros IFormFile requieren comprobaciones antifalsificación Cambio de comportamiento
El middleware de limitación de velocidad requiere AddRateLimiter Cambio de comportamiento
Los eventos de token de seguridad devuelven un JsonWebToken Cambio de comportamiento
TrimMode tiene como valor predeterminado completo los proyectos del SDK web No compatible con el origen

Contenedores

Title Tipo de cambio
paquete "ca-certificates" quitado de las imágenes de Alpine Binario incompatible
Imágenes de contenedor de Debian actualizadas a Debian 12 Cambio de comportamiento o incompatible binario
El puerto de ASP.NET Core predeterminado ha cambiado a 8080 Cambio de comportamiento
paquete Kerberos quitado de imágenes 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 AnonymousPipeServerStream.Dispose para HandleInheritability.Inheritable 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 respaldados por booleanos Cambio de comportamiento
enumeración de ruta de acceso de 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
Console.ReadKey heredado quitado Cambio de comportamiento
Los creadores de métodos generan parámetros con HasDefaultValue establecido en falso Cambio de comportamiento
ProcessStartInfo.WindowStyle se respeta cuando UseShellExecute es false Cambio de comportamiento
RuntimeIdentifier devuelve la plataforma para la que se creó en tiempo de ejecución 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 Inclusión
Tamaño de etiqueta de autenticación de AesGcm en macOS Cambio de comportamiento Versión preliminar 1
RSA. EncryptValue y RSA. DecryptValue está obsoleto 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 de comportamiento o incompatible binario
.NET Monitor solo incluye imágenes sin distribución Cambio de comportamiento
StripSymbols tiene true como valor predeterminado Cambio de comportamiento

Entity Framework Core

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 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 agregadas al diccionario por enlazador de configuración Cambio de comportamiento
HostApplicationBuilderSettings.Args respetado por HostApplicationBuilder ctor Cambio de comportamiento
ManagementDateTimeConverter.ToDateTime devuelve una hora local Cambio de comportamiento
Cambio de formato System.Formats.Cbor DateTimeOffset Cambio de comportamiento

Globalización

Título Tipo de cambio
Los convertidores de fecha y hora respetan el argumento de referencia cultural 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 serializadores 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

Redes

Título Tipo de cambio
SendFile produce una excepción NotSupportedException en sockets sin conexión 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

Título Tipo de cambio
La salida de la consola de la CLI usa UTF-8 Cambio de comportamiento / No compatible con el origen y el binario
Codificación de consola no UTF-8 tras finalizar la ejecución Cambio de comportamiento/Binario incompatible
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 en desuso Cambio de comportamiento
MSBuild respeta DOTNET_CLI_UI_LANGUAGE Cambio de comportamiento
Aplicaciones específicas del entorno de ejecución no independientes Origen o binario incompatible
La opción --arch no implica autocontenido Cambio de comportamiento
"dotnet restore" genera advertencias de vulnerabilidades de seguridad Cambio de comportamiento
El SDK usa un gráfico RID más pequeño Cambio de comportamiento / No compatible con el origen
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 producen un error 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
Cambios en el diseño del delimitador Cambio de comportamiento
Certificados comprobados antes de cargar imágenes remotas en PictureBox Cambio de comportamiento
Se ha quitado DefaultValueAttribute de algunas propiedades Cambio de comportamiento
El constructor ExceptionCollection genera 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 genera ArgumentException Cambio de comportamiento
Los formularios de nivel superior escalan el tamaño mínimo y máximo a PPP Cambio de comportamiento
La obsolescencia WFDEV002 ahora es un error No compatible con el origen

Consulte también