<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>.NET 11 | The .NET Blog</title><link>https://thedotnetblog.com/es/tags/.net-11/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>es</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Tue, 26 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/es/tags/.net-11/index.xml" rel="self" type="application/rss+xml"/><item><title>.NET 11 por fin arregla la API de Procesos</title><link>https://thedotnetblog.com/es/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/es/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</guid><description>System.Diagnostics.Process recibe su mayor actualización en años. RunAndCaptureTextAsync, KillOnParentExit, APIs SafeProcessHandle y control total sobre la redirección de handles estándar — sin más boilerplate de deadlock.</description><content:encoded>&lt;p&gt;Todo desarrollador .NET que alguna vez ha necesitado lanzar un proceso y capturar su salida ha escrito alguna variación del mismo boilerplate peligroso: lectura async de stdout, lectura async de stderr, &lt;code&gt;WaitForExitAsync&lt;/code&gt;, sin olvidar drenar ambos streams o producirás un deadlock. Es una trampa conocida que lleva años ahí.&lt;/p&gt;
&lt;p&gt;.NET 11 finalmente lo arregla correctamente.&lt;/p&gt;
&lt;h2 id="runandcapturetextasync"&gt;RunAndCaptureTextAsync&lt;/h2&gt;
&lt;p&gt;La adición principal: un único método estático que inicia un proceso, captura stdout y stderr, y espera la salida sin producir deadlock.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;Process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RunAndCaptureTextAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dotnet&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;--version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;StandardOutput&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Una sola llamada. Sin drenaje manual de streams. Sin un &lt;code&gt;WaitForExit&lt;/code&gt; colocado cuidadosamente. Si simplemente necesitas ejecutar algo y obtener su salida, esta es la API que quieres.&lt;/p&gt;
&lt;p&gt;También existe &lt;code&gt;Process.RunAsync&lt;/code&gt; para el caso en que quieras esperar la salida sin capturar el output.&lt;/p&gt;
&lt;h2 id="killonparentexit"&gt;KillOnParentExit&lt;/h2&gt;
&lt;p&gt;Un problema común con los procesos lanzados: si el padre falla o es terminado, los procesos hijo siguen ejecutándose como huérfanos. &lt;code&gt;KillOnParentExit&lt;/code&gt; te permite declarar en el momento de iniciar el proceso que el proceso hijo debe terminar cuando el proceso padre salga.&lt;/p&gt;
&lt;p&gt;Esta es una funcionalidad que ha existido de formas específicas de plataforma (job objects en Windows, prctl en Linux), pero requería p/invoke o bibliotecas de terceros para usarla desde .NET. Ahora es una propiedad de primera clase en &lt;code&gt;ProcessStartInfo&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="apis-basadas-en-safeprocesshandle"&gt;APIs Basadas en SafeProcessHandle&lt;/h2&gt;
&lt;p&gt;La nueva superficie de API ligera está construida sobre &lt;code&gt;SafeProcessHandle&lt;/code&gt; en lugar de la clase &lt;code&gt;Process&lt;/code&gt; completa. La clase &lt;code&gt;Process&lt;/code&gt; completa lleva mucho estado y es difícil de recortar — la ruta de &lt;code&gt;SafeProcessHandle&lt;/code&gt; es más amigable con el trimmer para aplicaciones que necesitan minimizar el tamaño de salida (WASM, AOT nativo).&lt;/p&gt;
&lt;h2 id="control-total-sobre-la-herencia-de-handles"&gt;Control Total Sobre la Herencia de Handles&lt;/h2&gt;
&lt;p&gt;La actualización también añade control detallado sobre qué handles hereda un proceso hijo y cómo se redirigen los handles estándar. Anteriormente podías redirigir stdin/stdout/stderr, pero no podías especificar exactamente qué handles heredar a nivel de SO. Las nuevas APIs exponen ese control.&lt;/p&gt;
&lt;h2 id="por-qué-importa"&gt;Por Qué Importa&lt;/h2&gt;
&lt;p&gt;La clase &lt;code&gt;Process&lt;/code&gt; se usa en tooling, sistemas de build, ejecutores de pruebas y cualquier aplicación que invoca otros ejecutables. La superficie de API anterior databa de .NET Framework y estaba mostrando su edad. No es un cambio que rompe compatibilidad — las APIs antiguas siguen funcionando — pero el nuevo código debería preferir la nueva superficie.&lt;/p&gt;
&lt;p&gt;Para aplicaciones recortadas o escenarios de compilación AOT, la ruta de &lt;code&gt;SafeProcessHandle&lt;/code&gt; es especialmente bienvenida. La antigua clase &lt;code&gt;Process&lt;/code&gt; arrastraba mucho código pesado en reflexión que complicaba el recorte.&lt;/p&gt;
&lt;p&gt;Post original: &lt;a href="https://devblogs.microsoft.com/dotnet/process-api-improvements-in-dotnet-11/"&gt;Process API Improvements in .NET 11&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>.NET 11 Preview 4: Plantilla de Servidor MCP, Bibliotecas Runtime-Async, API de Procesos</title><link>https://thedotnetblog.com/es/news/emiliano-montesdeoca/dotnet-11-preview-4-mcp-template-runtime-async-process-api/</link><pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/es/news/emiliano-montesdeoca/dotnet-11-preview-4-mcp-template-runtime-async-process-api/</guid><description>.NET 11 Preview 4 ya está disponible. Los puntos destacados: la plantilla de servidor MCP en el SDK, bibliotecas de tiempo de ejecución compiladas con runtime-async, dotnet watch para móvil y una importante expansión de la API de procesos.</description><content:encoded>&lt;p&gt;.NET 11 Preview 4 está disponible. Cada versión de una preview principal de .NET añade una larga lista de elementos en el runtime, SDK, bibliotecas, ASP.NET Core, MAUI, C# y Entity Framework. En lugar de repetir la lista completa, aquí están las cosas que me llamaron la atención.&lt;/p&gt;
&lt;h2 id="la-plantilla-de-servidor-mcp-llega-al-sdk-de-net"&gt;La Plantilla de Servidor MCP Llega al SDK de .NET&lt;/h2&gt;
&lt;p&gt;El elemento más interesante: ahora se incluye una plantilla de proyecto de servidor MCP en el SDK. Esto significa que &lt;code&gt;dotnet new mcp-server&lt;/code&gt; (o como acabe llamándose el comando) funciona de serie. Para cualquiera que construya herramientas MCP en .NET, esto elimina considerablemente la fricción inicial. La integración de MCP en la cadena de herramientas de la plataforma señala la dirección en que se dirige el ecosistema.&lt;/p&gt;
&lt;h2 id="bibliotecas-de-runtime-compiladas-con-runtime-async"&gt;Bibliotecas de Runtime Compiladas con Runtime-Async&lt;/h2&gt;
&lt;p&gt;El propio runtime ahora compila sus bibliotecas estándar usando la característica runtime-async. Es un cambio interno que afecta al rendimiento: las máquinas de estado async en el runtime se vuelven más eficientes. Lo importante aquí no son los cambios visibles en la API; es que runtime-async está lo suficientemente maduro para usarse con la propia BCL, lo cual es una señal significativa sobre la preparación de la característica.&lt;/p&gt;
&lt;h2 id="optimizaciones-del-jit-e-intrínsecos-de-hardware"&gt;Optimizaciones del JIT e Intrínsecos de Hardware&lt;/h2&gt;
&lt;p&gt;Preview 4 continúa el trabajo del JIT. Aquí se publican mejoras en los intrínsecos de hardware y en la generación de código — los detalles están en las notas de la versión del runtime. Este tipo de cambios suelen mejorar el rendimiento en bucles de cálculo intensivo sin necesidad de modificar tu código.&lt;/p&gt;
&lt;h2 id="expansión-de-la-api-de-procesos"&gt;Expansión de la API de Procesos&lt;/h2&gt;
&lt;p&gt;Preview 4 incluye una actualización importante a &lt;code&gt;System.Diagnostics.Process&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Process.RunAndCaptureTextAsync&lt;/code&gt; — inicia un proceso, captura stdout/stderr, espera la salida, todo en una sola llamada sin riesgo de deadlock&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KillOnParentExit&lt;/code&gt; — acoplamiento ligero del ciclo de vida entre procesos padre e hijo&lt;/li&gt;
&lt;li&gt;APIs basadas en &lt;code&gt;SafeProcessHandle&lt;/code&gt; más amigables con el trimmer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si alguna vez has escrito código repetitivo para capturar la salida de un proceso sin provocar deadlocks (lectura async de stdout &lt;em&gt;y&lt;/em&gt; stderr simultáneamente), &lt;code&gt;RunAndCaptureTextAsync&lt;/code&gt; es la API que te faltaba.&lt;/p&gt;
&lt;h2 id="dotnet-watch-para-android-e-ios"&gt;dotnet watch para Android e iOS&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;dotnet watch&lt;/code&gt; ahora admite la selección de dispositivo para proyectos .NET MAUI en Android e iOS. Iteración más rápida en móvil sin gestionar manualmente las conexiones de dispositivos en el bucle de compilación.&lt;/p&gt;
&lt;h2 id="apis-de-compresión-basadas-en-span"&gt;APIs de Compresión Basadas en Span&lt;/h2&gt;
&lt;p&gt;En las bibliotecas llegan nuevas APIs de codificación/decodificación Deflate, ZLib y GZip basadas en span. Menos asignaciones al tratar con datos comprimidos, relevante si realizas procesamiento de datos de alto rendimiento.&lt;/p&gt;
&lt;h2 id="pruébalo"&gt;Pruébalo&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://dotnet.microsoft.com/download/dotnet/11.0"&gt;Descargar .NET 11 Preview 4&lt;/a&gt; — es una preview, no apta para producción, pero vale la pena ejecutarla contra tus proyectos para detectar problemas antes del ciclo de RC.&lt;/p&gt;
&lt;p&gt;Post original: &lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-11-preview-4/"&gt;.NET 11 Preview 4 is now available!&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>