miércoles, 20 de mayo de 2026 a las 14:20hs por Gustavo Cantero (The Wolf)
Hace una semana Microsoft publicó .NET 11 Preview 4, la cuarta versión preliminar de la próxima versión de .NET. Como suele pasar con estas previews, no estamos ante una versión para tirar directo a producción, pero sí ante una buena oportunidad para ver hacia dónde va la plataforma y empezar a probar cambios en proyectos internos, librerías o entornos de laboratorio.
La publicación oficial está en el blog de .NET: .NET 11 Preview 4 is now available!. Desde ahí también se puede ir a la página de descarga de .NET 11 Preview 4, que incluye el SDK 11.0.100-preview.4, el runtime, ASP.NET Core Runtime y Desktop Runtime. Esta preview incluye C# 14.0, F# 10.0 y Visual Basic 17.13.
El cambio que más se siente: mejoras grandes en System.Diagnostics.Process
Una de las novedades más prácticas viene por el lado de System.Diagnostics.Process. Microsoft lo define como la actualización más grande de esta API en años, y tiene sentido: trabajar con procesos externos desde .NET siempre fue posible, pero muchas veces era incómodo, verboso o fácil de romper con deadlocks al capturar stdout y stderr.
En .NET 11 aparecen APIs de más alto nivel como Process.RunAndCaptureText, Process.Run, Process.StartAndForget, nuevos métodos para leer salida como texto, bytes o líneas, y opciones más finas para manejar redirección de handles, herencia de handles, timeouts y procesos hijos. También aparece KillOnParentExit, útil cuando queremos evitar que un proceso hijo quede vivo si el proceso padre se cae o termina.
Un ejemplo simple del nuevo estilo sería algo así:
ProcessTextOutput output = Process.RunAndCaptureText("dotnet", ["--help"]);
Console.WriteLine(output.StandardOutput);
Console.WriteLine(output.StandardError);
Console.WriteLine(output.ExitStatus.ExitCode);
La ventaja no es solamente escribir menos código. El punto fuerte es que estas APIs están pensadas para capturar salida estándar y error estándar sin caer en los típicos problemas de bloqueo por buffers llenos. Microsoft también menciona mejoras de rendimiento, menor uso de memoria en Unix, mejor escalabilidad en Windows y mejoras importantes en creación de procesos en Apple Silicon.
Runtime: runtime-async empieza a tomar más protagonismo
En el runtime, una de las novedades importantes es que las librerías del runtime ahora se compilan con runtime-async=on. En lugar de depender de las máquinas de estado generadas por el compilador para los métodos async, el runtime usa su propio soporte de async. Según Microsoft, esto sirve tanto para probar funcionalidad y rendimiento como para avanzar hacia un modelo que podría mejorar throughput y tamaño de librerías, dependiendo de cuánto async use una aplicación.
También hay trabajo en el JIT: mejoras de inlining, eliminación de checks redundantes, optimizaciones sobre SequenceEqual, mejoras para SIMD y floating point, aceleración F16C para conversiones entre Half y float, y avances en WebAssembly/CoreCLR. No son cambios que normalmente obliguen a modificar código, pero sí pueden impactar en performance sin tocar la aplicación.
ASP.NET Core: OpenAPI, Blazor, MCP y Kestrel
ASP.NET Core también recibe varias mejoras en esta preview. Una de las más llamativas es el soporte para HTTP QUERY en documentos OpenAPI generados. QUERY es un método propuesto para búsquedas seguras e idempotentes donde la consulta puede necesitar un body, por ejemplo, cuando el filtro es demasiado grande o estructurado para mandarlo cómodamente por URL. En OpenAPI 3.2 puede aparecer como operación query, al mismo nivel que get o post.
También hay novedades para Blazor. Aparece [SupplyParameterFromTempData], que permite leer y escribir valores de TempData directamente desde propiedades de un componente Blazor SSR. Además, hay mejoras en Virtualize, templates para Blazor WebAssembly, Web Workers, reducción del tamaño de publicación de Blazor WebAssembly y mejoras en el manejo de circuitos de Blazor Server.
Otro cambio interesante es que el template mcpserver ahora viene incluido con el SDK de .NET. Antes requería instalar templates adicionales; ahora se puede crear un servidor MCP directamente con:
dotnet new mcpserver -o MyMcpServer
Esto no convierte a .NET 11 en “la versión de MCP”, pero sí muestra que Microsoft está integrando mejor este tipo de escenarios dentro del stack web estándar.
Kestrel también suma mejoras de observabilidad para TLS. En particular, ITlsHandshakeFeature ahora puede exponer la excepción ocurrida durante un handshake TLS fallido, lo que facilita diagnosticar problemas de certificados, protocolos o negociación TLS sin quedarse solamente con un IOException genérico.
EF Core: vectores en SQL Server 2025, JSON y tablas temporales
En Entity Framework Core, la novedad más visible es el soporte para búsqueda vectorial aproximada contra SQL Server 2025. EF Core puede traducir consultas ANN usando VectorSearch() y WithApproximate(), generando SQL que usa índices vectoriales y la cláusula WITH APPROXIMATE. Esto apunta directo a escenarios de búsqueda semántica, embeddings y aplicaciones con funcionalidades de IA.
Un ejemplo del estilo de consulta:
var query = await context.Blogs
.VectorSearch(b => b.Embedding, queryVector)
.WithApproximate()
.Take(10)
.ToListAsync();
También hay mejoras en el mapeo JSON. Las columnas JSON pasan a estar más integradas en el modelo relacional de EF Core, con una representación estructurada de paths JSON. Para la mayoría de las aplicaciones esto debería ser transparente, pero ayuda a mejorar diagnósticos, migraciones, compiled models y SQL de actualizaciones parciales.
Otro cambio práctico: en tablas temporales de SQL Server, las propiedades PeriodStart y PeriodEnd ya no tienen que ser necesariamente shadow properties. Ahora pueden mapearse a propiedades CLR normales, lo que permite leerlas desde la entidad como cualquier otra columna.
SDK, C# y .NET MAUI
En el SDK hay cambios más chicos, pero útiles. dotnet watch suma selección de dispositivos para proyectos .NET MAUI y móviles, las completions de Fish se alinean con Bash, Zsh y PowerShell, algunos comandos como dotnet reference pueden usar el directorio actual como fallback, y la telemetría de CLI pasa de Application Insights a OpenTelemetry.
En C#, esta preview incluye un diagnóstico más claro para directivas #! mal ubicadas y una caché de compilación opt-in para el build server VBCSCompiler. En .NET MAUI, las novedades principales mencionadas por Microsoft son dotnet watch para Android e iOS, la cual es una herramienta del SDK de .NET que ejecuta una app y queda “mirando” los archivos del proyecto. Cuando detecta cambios, recompila y aplica el cambio automáticamente o reinicia la aplicación
¿Conviene instalarlo?
Para producción, no. Es una preview. Pero para pruebas, librerías, benchmarks internos o para ir midiendo compatibilidad con lo que viene, si puede valer la pena.
Si trabajás con procesos externos desde .NET, las nuevas APIs de Process son probablemente lo primero que miraría. Si estás en web, revisaría los cambios de ASP.NET Core, especialmente OpenAPI, Blazor, Kestrel y MCP. Y si estás explorando embeddings o búsqueda semántica con SQL Server, lo de EF Core y vector search merece una prueba aparte.
La descarga está disponible desde la página oficial de Microsoft: .NET 11.0 downloads. Y el resumen de novedades está en el anuncio oficial: .NET 11 Preview 4 is now available.

Deja un comentario