Compartir a través de


Cambios importantes en .NET 10

Si va a migrar una aplicación a .NET 10, 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:

  • Binario incompatible - Cuando se ejecuta en el nuevo entorno de ejecución o componente, los binarios existentes podrían experimentar un cambio significativo en el comportamiento, como fallos al cargar o ejecutar, y, si es así, requieren recompilación.

  • Origen incompatible : cuando se vuelve a compilar con el nuevo SDK o componente o para tener como destino el nuevo entorno de ejecución, 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.

Nota:

Este artículo sigue en desarrollo. No es una lista completa de los cambios importantes en .NET 10.

ASP.NET Core

Título Tipo de cambio
Se han deshabilitado los redireccionamientos de inicio de sesión de cookies para los puntos de conexión de API conocidos Cambio de comportamiento
Desuso del método de extensión WithOpenApi No compatible con el origen
Diagnósticos de excepciones suprimidos cuando TryHandleAsync devuelve true Cambio de comportamiento
IActionContextAccessor y ActionContextAccessor están obsoletos Origen incompatible/cambio de comportamiento
La propiedad IncludeOpenAPIAnalyzers y los analizadores de API de MVC están en desuso No compatible con el origen
IPNetwork y ForwardedHeadersOptions.KnownNetworks están obsoletos No compatible con el origen
Paquete Microsoft.Extensions.ApiDescription.Client en desuso No compatible con el origen
Razor La compilación en tiempo de ejecución está obsoleta No compatible con el origen
WebHostBuilder, IWebHost y WebHost están obsoletos No compatible con el origen

Contenedores

Título Tipo de cambio
Las imágenes de .NET predeterminadas usan Ubuntu Cambio de comportamiento

Bibliotecas de Core .NET

Título Tipo de cambio
Cambio de comportamiento activitySource.CreateActivity y ActivitySource.StartActivity Cambio de comportamiento
Las cargas sin fallos de Arm64 SVE requieren máscara Binario/origen incompatible
BufferedStream.WriteByte ya no realiza el vaciado implícito Cambio de comportamiento
Resolución de sobrecarga en C# 14 con parámetros span Cambio de comportamiento
Comportamiento de desplazamiento coherente en matemáticas genéricas Cambio de comportamiento
Propagador de contexto de seguimiento predeterminado actualizado al estándar W3C Cambio de comportamiento
DriveInfo.DriveFormat devuelve tipos de sistema de archivos linux Cambio de comportamiento
Anotación DynamicallyAccessedMembers quitada del ctor DefaultValueAttribute Binario/origen incompatible
Tamaño de estructura explícito no permitido con InlineArray Incompatibilidad binaria
FilePatternMatch.Stem cambió a no acepta valores NULL Origen incompatible/cambio de comportamiento
GnuTarEntry y PaxTarEntry ya no incluyen atime y ctime de forma predeterminada Cambio de comportamiento
El análisis de LDAP DirectoryControl ahora es más estricto Cambio de comportamiento
Normalización de versiones de MacCatalyst Cambio de comportamiento
El entorno de ejecución de .NET ya no proporciona controladores de señal de terminación predeterminados Cambio de comportamiento
System.Linq.AsyncEnumerable incluido en las bibliotecas principales No compatible con el origen
Validación del argumento Type.MakeGenericSignatureType Cambio de comportamiento

Criptografía

Título Tipo de cambio
CompositeMLDsa se actualizó a draft-08 Cambio de comportamiento
CoseSigner.Key puede ser nulo Cambio de comportamiento/Incompatible con origen
Se ha cambiado el nombre de los miembros de MLDsa y SlhDsa "SecretKey". No compatible con el origen
No se admiten primitivos criptográficos openSSL en macOS Cambio de comportamiento
OpenSSL 1.1.1 o posterior requerido en Unix Cambio de comportamiento
La validación de X500DistinguishedName es más estricta Cambio de comportamiento
Los parámetros de clave PublicKey y X509Certificate pueden ser NULL Cambio de comportamiento/Incompatible con origen
Se ha cambiado el nombre de la variable de entorno a DOTNET_OPENSSL_VERSION_OVERRIDE Cambio de comportamiento

Entity Framework Core

Cambios importantes en EF Core 10

Extensiones

Título Tipo de cambio
BackgroundService ejecuta todo ExecuteAsync como una tarea Cambio de comportamiento
Corrección de problemas en GetKeyedService() y GetKeyedServices() con AnyKey Cambio de comportamiento
Valores NULL conservados en la configuración Cambio de comportamiento
El mensaje ya no está duplicado en la salida del registro de consola Cambio de comportamiento
ProviderAliasAttribute ha sido movido al ensamblado Microsoft.Extensions.Logging.Abstractions No compatible con el origen
Se quitó la anotación DynamicallyAccessedMembers del código trim-unsafe Microsoft.Extensions.Configuration Incompatibilidad binaria

Globalización

Título Tipo de cambio
Se ha cambiado el nombre de la variable de entorno a DOTNET_ICU_VERSION_OVERRIDE Cambio de comportamiento

Herramienta de instalación

Título Tipo de cambio
dotnet.acquire API para VS Code ya no siempre descarga la versión más reciente. Cambio de comportamiento

Interop

Título Tipo de cambio
Error al convertir el objeto COM IDispatchEx en IReflect Cambio de comportamiento
Las aplicaciones de un solo archivo ya no buscan bibliotecas nativas en el directorio ejecutable Cambio de comportamiento
Especificando DllImportSearchPath.AssemblyDirectory solo busca en el directorio del ensamblado Cambio de comportamiento

Redes

Título Tipo de cambio
Compatibilidad con HTTP/3 deshabilitada de forma predeterminada con PublishTrimmed No compatible con el origen
Transmisión de respuestas HTTP habilitada por defecto en los clientes HTTP del navegador Cambio de comportamiento
Uri límites de longitud quitados Cambio de comportamiento

Reflexión

Título Tipo de cambio Versión introducida
Anotaciones más restringidas en InvokeMember/FindMembers/DeclaredMembers Comportamiento/origen incompatible

SDK y MSBuild

Título Tipo de cambio
La CLI --interactive de .NET tiene como valor predeterminado en escenarios true de usuario Cambio de comportamiento
dotnet Los comandos de la CLI registran datos no relacionados con el comando en stderr Cambio de comportamiento
El empaquetado de herramientas de .NET crea paquetes de herramientas específicos de RuntimeIdentifier Cambio de comportamiento
Configuración predeterminada de la carga de trabajo del modo "manifiestos sueltos" al modo "conjuntos de cargas de trabajo" Cambio de comportamiento
La cobertura de código EnableDynamicNativeInstrumentation tiene como valor predeterminado false Cambio de comportamiento
dnx.ps1 archivo ya no se incluye en el SDK de .NET No compatible con el origen
dotnet new sln el valor predeterminado es el formato de archivo SLNX. Cambio de comportamiento
dotnet package list realiza la restauración Cambio de comportamiento
dotnet restore audita paquetes transitivos Cambio de comportamiento
dotnet tool install --local crea el manifiesto de forma predeterminada Cambio de comportamiento
dotnet watch registra en stderr en lugar de stdout Cambio de comportamiento
project.json no se admite en dotnet restore No compatible con el origen
Compatibilidad con huellas digitales SHA-1 en desuso en dotnet nuget sign Cambio de comportamiento
Se ha eliminado la opción de escape MSBUILDCUSTOMBUILDEVENTWARNING Cambio de comportamiento
Manejo de recursos de cultura personalizada en MSBuild Cambio de comportamiento
Nu1510 se genera para las referencias directas que NuGet elimina No compatible con el origen
Los paquetes NuGet sin recursos en tiempo de ejecución no se incluyen en deps.json No compatible con el origen
PackageReference sin una versión genera un error Cambio de comportamiento
PrunePackageReference privaciones directas referencias que se pueden eliminar Cambio de comportamiento
Advertencias HTTP convertidas en errores en dotnet package list y dotnet package search Cambio de comportamiento/Incompatible con origen
Eliminación de la variable de entorno NUGET_ENABLE_ENHANCED_HTTP_RETRY Cambio de comportamiento
NuGet registra un error para identificadores de paquete no válidos Cambio de comportamiento
ToolCommandName no establecido para paquetes que no son de herramientas No compatible con el origen

Serialización

Título Tipo de cambio
System.Text.Json comprueba si hay conflictos de nombres de propiedad Cambio de comportamiento
XmlSerializer ya no omite las propiedades marcadas con ObsoleteAttribute Cambio de comportamiento

Windows Forms

Título Tipo de cambio
Obsolescencias de API No compatible con el origen
Las aplicaciones que hacen referencia tanto a WPF como a WinForms deben desambiguar los tipos MenuItem y ContextMenu No compatible con el origen
Se ha cambiado el nombre del parámetro en HtmlElement.InsertAdjacentElement No compatible con el origen
Truncamiento de la imagen del cuadro de verificación en TreeView Cambio de comportamiento
StatusStrip usa System RenderMode de forma predeterminada Cambio de comportamiento
System.Drawing OutOfMemoryException se cambió a ExternalException Cambio de comportamiento

Windows Presentation Foundation (WPF)

Título Tipo de cambio
No se permiten ColumnDefinitions y RowDefinitions vacíos No compatible con el origen
El uso incorrecto de DynamicResource provoca un bloqueo de aplicación Origen incompatible/cambio de comportamiento