Leer en inglés

Compartir a través de


Cambios importantes en .NET 9

Si va a migrar una aplicación a .NET 9, 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 funcionamiento: el código y los archivos binarios existentes pueden comportarse de forma diferente en tiempo de ejecución. Si el nuevo funcionamiento no es deseable, el código existente debe actualizarse y volver a compilarse.

Nota

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

ASP.NET Core

Título Tipo de cambio Versión introducida
DefaultKeyResolution.ShouldGenerateNewKey tiene un significado distinto Cambio de funcionamiento Versión preliminar 3
La exportación de certificados de desarrollo ya no crea la carpeta Cambio de comportamiento RC 1
HostBuilder habilita ValidateOnBuild/ValidateScopes en el entorno de desarrollo Cambio de funcionamiento Versión preliminar 7
Tipos de middleware con varios constructores Cambio de comportamiento RC 1

Contenedores

Title Tipo de cambio Versión introducida
Las imágenes de contenedor de .NET 9 ya no instalan zlib Cambio de funcionamiento Versión preliminar 7

Bibliotecas de Core .NET

Título Tipo de cambio Versión introducida
Agregar un ZipArchiveEntry con CompressionLevel establece marcas de bits de encabezado de directorio central ZIP de uso general Cambio de funcionamiento Versión preliminar 5
Compatibilidad con UnsafeAccessor modificado para genéricos no abiertos Cambio de funcionamiento Versión preliminar 6
Obsolescencias de API con identificadores de diagnóstico personalizados No compatible con el origen (Varios)
Longitud máxima de BigInteger Cambio de funcionamiento Versión preliminar 6
BinaryReader.GetString() devuelve "\uFFFD" en secuencias con formato incorrecto Cambio de comportamiento Versión preliminar 7
No se permite crear el tipo de matriz System.Void Cambio de funcionamiento Versión preliminar 1
Inicio de Equals() y GetHashCode() predeterminados para tipos marcados con InlineArrayAttribute Cambio de funcionamiento Versión preliminar 6
EnumConverter valida los tipos registrados que se van a enumerar. Cambio de comportamiento Versión preliminar 7
FromKeyedServicesAttribute ya no inserta un parámetro sin clave Cambio de funcionamiento RC 1
La devolución de llamada inicial de IncrementingPollingCounter es asincrónica Cambio de funcionamiento RC 1
Se aplica el límite de tamaño de estructura de matriz insertada Cambio de funcionamiento Versión preliminar 1
InMemoryDirectoryInfo antepone rootDir a los archivos Cambio de funcionamiento Versión preliminar 1
Nuevas sobrecargas TimeSpan.From*() que toman enteros No compatible con el origen Versión preliminar 3
RuntimeHelpers.GetSubArray devuelve un tipo diferente Cambio de funcionamiento Versión preliminar 1
Sobrecarga String.Trim(params ReadOnlySpan<char>) eliminada Origen o binario incompatible GA
Compatibilidad con variables de entorno vacías Cambio de funcionamiento Versión preliminar 6
Los nombres y comentarios de ZipArchiveEntry respetan la flag UTF8 Cambio de funcionamiento RC 1

Criptografía

Título Tipo de cambio Versión introducida
SafeEvpPKeyHandle.DuplicateHandle hace referencia al identificador Cambio de funcionamiento Versión preliminar 7
Algunos constructores X509Certificate2 y X509Certificate están obsoletos No compatible con el origen Versión preliminar 7
Duración simplificada de la clave privada de Windows Cambio de comportamiento Versión preliminar 7

Implementación

Título Tipo de cambio Versión introducida
Paquetes de runtime MonoVM de escritorio obsoletos para Windows, macOS o Linux No compatible con el origen Versión preliminar 7

Interop

Título Tipo de cambio Versión introducida
CET admitido de forma predeterminada Binario incompatible Versión preliminar 6

Compilador JIT

Título Tipo de cambio Versión introducida
Las conversiones de decimal a entero se saturan Cambio de funcionamiento Versión preliminar 4
Se han eliminado algunas API de SVE No compatible con el origen RC 2

Redes

Título Tipo de cambio Versión introducida
Obsolescencias de API No compatible con el origen Versión preliminar 6
Informe server.port de métricas httpClient incondicionalmente Cambio de comportamiento Versión preliminar 7
El registro de HttpClientFactory oculta los valores de encabezado de forma predeterminada Cambio de funcionamiento RC 1
HttpClientFactory usa SocketsHttpHandler como controlador principal Cambio de comportamiento Versión preliminar 6
HttpListenerRequest.UserAgent admite valores null No compatible con el origen Versión preliminar 1
URI query redaction in HttpClient EventSource events Cambio de comportamiento Versión preliminar 7
URI query redaction in IHttpClientFactory logs (Reacción de consultas de URI en registros de IHttpClientFactory) Cambio de comportamiento Versión preliminar 7

SDK y MSBuild

Título Tipo de cambio Versión introducida
dotnet restore audita paquetes transitivos Cambio de comportamiento Versión preliminar 6
dotnet watchincompatible con Recarga activa para marcos antiguos Cambio de comportamiento RC 1
Cambios en la salida de los comandos dotnet workload Cambio de funcionamiento Versión preliminar 1
La versión del repositorio installer ya no está documentada Cambio de funcionamiento Versión preliminar 5
El registrador de terminales está establecido de forma predeterminada Cambio de funcionamiento Versión preliminar 1
Requisitos de versión para el SDK de .NET 9 No compatible con el origen GA
Advertencia emitida para el destino de .NET Standard 1.x No compatible con el origen Versión preliminar 6
Advertencia emitida para el destino de .NET 7 No compatible con el origen GA

Serialización

Título Tipo de cambio Versión introducida
BinaryFormatter siempre produce una excepción Cambio de funcionamiento Versión preliminar 6

Windows Forms

Título Tipo de cambio Versión introducida
BindingSource.SortDescriptions no devuelve valores null Cambio de funcionamiento Versión preliminar 1
Cambios en las anotaciones de nulabilidad No compatible con el origen Versión preliminar 1
ComponentDesigner.Initialize genera la excepción ArgumentNullException Cambio de funcionamiento Versión preliminar 1
Índice de fila inicial para DataGridViewRowAccessibleObject.Name Cambio de funcionamiento Versión preliminar 1
La compatibilidad con IMsoComponent es opcional Cambio de funcionamiento Versión preliminar 2
Nuevos analizadores de seguridad No compatible con el origen RC 1
No hay ninguna excepción si DataGridView es null Cambio de funcionamiento Versión preliminar 1
PictureBox inicia excepciones HttpClient Cambio de funcionamiento Versión preliminar 6

WPF

Título Tipo de cambio Versión introducida
Cambio de tipo GetXmlNamespaceMaps Cambio de funcionamiento / No compatible con el origen Versión preliminar 3

Consulte también