Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
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 disruptivo como no compatible con el binario, no compatible con el origen o cambio de comportamiento:
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 |
|---|---|
| Significado modificado DefaultKeyResolution.ShouldGenerateNewKey | Cambio de comportamiento |
| La exportación de certificados de desarrollo ya no crea la carpeta | Cambio de comportamiento |
| Middleware de encabezados reenviados omite los encabezados X-Forwarded-* de servidores proxy desconocidos | Cambio de comportamiento |
| HostBuilder habilita ValidateOnBuild/ValidateScopes en el entorno de desarrollo | Cambio de comportamiento |
| API heredadas de Mono y Emscripten no exportadas al espacio de nombres global | Fuente incompatible |
| Tipos de middleware con varios constructores | Cambio de comportamiento |
Contenedores
| Título | Tipo de cambio | Versión introducida |
|---|---|---|
| Las imágenes de contenedor ya no instalan zlib | Cambio de comportamiento | Versión preliminar 7 |
| Imágenes de .NET Monitor simplificadas en etiquetas de solo versión | Cambio de comportamiento | Versión preliminar 5 |
Bibliotecas de Core .NET
Criptografía
| Título | Tipo de cambio | Versión introducida |
|---|---|---|
| API eliminadas de System.Security.Cryptography.Pkcs netstandard2.0 | Fuente incompatible | Disponibilidad general |
| SafeEvpPKeyHandle.DuplicateHandle hace referencia al identificador | Cambio de comportamiento | Versión preliminar 7 |
| Algunos constructores X509Certificate2 y X509Certificate están obsoletos | Fuente incompatible | 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 de escritorio obsoletos para Windows/macOS/Linux | Fuente incompatible | Versión preliminar 7 |
Entity Framework Core
Cambios importantes en EF Core 9
Interoperabilidad
| Título | Tipo de cambio | Versión introducida |
|---|---|---|
| CET compatible de manera predeterminada | Incompatibilidad binaria | Versión preliminar 6 |
Compilador JIT
| Título | Tipo de cambio | Versión introducida |
|---|---|---|
| Las conversiones de punto flotante a entero se están saturando | Cambio de comportamiento | Versión preliminar 4 |
| Se han eliminado algunas API de SVE | Fuente incompatible | RC 2 |
Redes
| Título | Tipo de cambio | Versión introducida |
|---|---|---|
| Obsolescencias de API | Fuente incompatible | Versión preliminar 6 |
Informe incondicional de métricas de HttpClient server.port |
Cambio de comportamiento | Versión preliminar 7 |
| El registro de HttpClientFactory oculta los valores de encabezado de forma predeterminada | Cambio de comportamiento | RC 1 |
| HttpClientFactory usa SocketsHttpHandler como controlador principal | Cambio de comportamiento | Versión preliminar 6 |
| HttpListenerRequest.UserAgent admite valores null | Fuente incompatible | Versión preliminar 1 |
| Redacción de consultas URI en eventos de HttpClient EventSource | Cambio de comportamiento | Versión preliminar 7 |
| 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 sln add no permite nombres de archivo no válidos |
Cambio de comportamiento | 9.0.2xx |
dotnet watch incompatible con Hot Reload para frameworks antiguos |
Cambio de comportamiento | RC 1 |
Cambio en el resultado generado por los comandos dotnet workload |
Cambio de comportamiento | Versión preliminar 1 |
installer La versión del repositorio ya no está documentada |
Cambio de comportamiento | Versión preliminar 5 |
| Manejo de recursos de cultura personalizada de MSBuild | Cambio de comportamiento | 9.0.200/9.0.300 |
| Nuevo RID predeterminado que se usa al tener como destino .NET Framework | Fuente incompatible | Disponibilidad general |
| El registrador de terminal está configurado por defecto | Cambio de comportamiento | Versión preliminar 1 |
| Requisitos de versión para el SDK de .NET 9 | Fuente incompatible | Disponibilidad general |
| Advertencia emitida para destinos de .NET Standard 1.x | Fuente incompatible | Versión preliminar 6 |
| Advertencia emitida para el destino de .NET 7 | Fuente incompatible | Disponibilidad general |
Serialización
| Título | Tipo de cambio | Versión introducida |
|---|---|---|
| BinaryFormatter siempre produce una excepción | Cambio de comportamiento | Versión preliminar 6 |
| Las propiedades anulables de JsonDocument se deserializan a JsonValueKind.Null | Cambio de comportamiento | Versión preliminar 1 |
| System.Text.Json ahora desescapa los nombres de las propiedades de metadatos | Cambio de comportamiento | Disponibilidad general |
Windows Forms
| Título | Tipo de cambio | Versión introducida |
|---|---|---|
| BindingSource.SortDescriptions no devuelve valores null | Cambio de comportamiento | Versión preliminar 1 |
| Cambios en las anotaciones de nulabilidad | Fuente incompatible | Versión preliminar 1 |
| ComponentDesigner.Initialize genera la excepción ArgumentNullException | Cambio de comportamiento | Versión preliminar 1 |
| Índice de fila inicial de DataGridViewRowAccessibleObject.Name | Cambio de comportamiento | Versión preliminar 1 |
| La compatibilidad con IMsoComponent es opcional | Cambio de comportamiento | Versión preliminar 2 |
| Nuevos analizadores de seguridad | Fuente incompatible | RC 1 |
| No hay ninguna excepción si DataGridView es null | Cambio de comportamiento | Versión preliminar 1 |
| PictureBox genera excepciones HttpClient | Cambio de comportamiento | Versión preliminar 6 |
| StatusStrip usa un representador predeterminado diferente | Cambio de comportamiento | Disponibilidad general |
WPF (Windows Presentation Foundation)
| Título | Tipo de cambio | Versión introducida |
|---|---|---|
Cambio del tipo GetXmlNamespaceMaps |
Cambio de comportamiento / No compatible con el origen | Versión preliminar 3 |