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 funcionamiento | RC 1 |
HostBuilder habilita ValidateOnBuild/ValidateScopes en el entorno de desarrollo | Cambio de funcionamiento | Versión preliminar 7 |
API heredadas de Mono y Emscripten no exportadas al espacio de nombres global | No compatible con el origen | GA |
Tipos de middleware con varios constructores | Cambio de funcionamiento | RC 1 |
Contenedores
Título | Tipo de cambio | Versión introducida |
---|---|---|
Las imágenes de contenedor ya no instalan zlib | Cambio de funcionamiento | Versión preliminar 7 |
Imágenes de .NET Monitor simplificadas en etiquetas de solo versión | Cambio de funcionamiento | Versión preliminar 5 |
Bibliotecas de Core .NET
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 funcionamiento | 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 funcionamiento | 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 funcionamiento | 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 funcionamiento | Versión preliminar 7 |
URI query redaction in IHttpClientFactory logs (Reacción de consultas de URI en registros de IHttpClientFactory) | Cambio de funcionamiento | Versión preliminar 7 |
SDK y MSBuild
Título | Tipo de cambio | Versión introducida |
---|---|---|
dotnet restore audita paquetes transitivos |
Cambio de funcionamiento | Versión preliminar 6 |
dotnet sln add no permite nombres de archivo no válidos |
Cambio de funcionamiento | 9.0.2xx |
dotnet watch incompatible con Recarga activa para marcos antiguos |
Cambio de funcionamiento | 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 |
Nuevo RID predeterminado que se usa al tener como destino .NET Framework | No compatible con el origen | GA |
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 |
Las propiedades anulables de JsonDocument se deserializan a JsonValueKind.Null | Cambio de funcionamiento | Versión preliminar 1 |
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 |
StatusStrip usa un representador predeterminado diferente | Cambio de funcionamiento | GA |
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 |