<?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/it/tags/.net-11/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>it</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/it/tags/.net-11/index.xml" rel="self" type="application/rss+xml"/><item><title>.NET 11 finalmente risolve l'API dei Processi</title><link>https://thedotnetblog.com/it/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/it/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</guid><description>System.Diagnostics.Process riceve il suo aggiornamento più grande degli ultimi anni. RunAndCaptureTextAsync, KillOnParentExit, API SafeProcessHandle e controllo completo sul reindirizzamento degli handle standard — niente più boilerplate per i deadlock.</description><content:encoded>&lt;p&gt;Ogni sviluppatore .NET che abbia mai avuto bisogno di avviare un processo e catturarne l&amp;rsquo;output ha scritto qualche variante dello stesso pericoloso boilerplate: lettura async da stdout, lettura async da stderr, &lt;code&gt;WaitForExitAsync&lt;/code&gt;, senza dimenticare di svuotare entrambi gli stream altrimenti si va in deadlock. È una trappola ben nota che esiste da anni.&lt;/p&gt;
&lt;p&gt;.NET 11 finalmente la risolve correttamente.&lt;/p&gt;
&lt;h2 id="runandcapturetextasync"&gt;RunAndCaptureTextAsync&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;aggiunta principale: un singolo metodo statico che avvia un processo, cattura stdout e stderr, e attende l&amp;rsquo;uscita senza 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 chiamata. Nessuno svuotamento manuale degli stream. Nessun &lt;code&gt;WaitForExit&lt;/code&gt; posizionato con cura. Se hai solo bisogno di eseguire qualcosa e ottenere il suo output, questa è l&amp;rsquo;API che vuoi.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;è anche &lt;code&gt;Process.RunAsync&lt;/code&gt; per il caso in cui vuoi aspettare l&amp;rsquo;uscita senza catturare l&amp;rsquo;output.&lt;/p&gt;
&lt;h2 id="killonparentexit"&gt;KillOnParentExit&lt;/h2&gt;
&lt;p&gt;Un problema comune con i processi avviati: se il processo padre si arresta o viene terminato, i processi figli continuano a girare come orfani. &lt;code&gt;KillOnParentExit&lt;/code&gt; ti permette di dichiarare all&amp;rsquo;avvio del processo che il processo figlio deve essere terminato quando il processo padre esce.&lt;/p&gt;
&lt;p&gt;Questa è una funzionalità che esisteva in modi specifici per piattaforma (job objects su Windows, prctl su Linux) ma richiedeva p/invoke o librerie di terze parti per essere usata da .NET. Ora è una proprietà di prima classe su &lt;code&gt;ProcessStartInfo&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="api-basate-su-safeprocesshandle"&gt;API Basate su SafeProcessHandle&lt;/h2&gt;
&lt;p&gt;La nuova superficie API leggera è costruita attorno a &lt;code&gt;SafeProcessHandle&lt;/code&gt; piuttosto che alla classe &lt;code&gt;Process&lt;/code&gt; completa. La classe &lt;code&gt;Process&lt;/code&gt; completa porta molto stato ed è difficile da eliminare — il percorso &lt;code&gt;SafeProcessHandle&lt;/code&gt; è più adatto al trimmer per le applicazioni che devono minimizzare le dimensioni dell&amp;rsquo;output (WASM, AOT nativo).&lt;/p&gt;
&lt;h2 id="controllo-completo-sullereditarietà-degli-handle"&gt;Controllo Completo sull&amp;rsquo;Ereditarietà degli Handle&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;aggiornamento aggiunge anche un controllo granulare su quali handle un processo figlio eredita e come vengono reindirizzati gli handle standard. In precedenza potevi reindirizzare stdin/stdout/stderr ma non potevi specificare esattamente quali handle ereditare a livello di SO. Le nuove API espongono quel controllo.&lt;/p&gt;
&lt;h2 id="perché-è-importante"&gt;Perché È Importante&lt;/h2&gt;
&lt;p&gt;La classe &lt;code&gt;Process&lt;/code&gt; è usata in tooling, sistemi di build, test runner e qualsiasi applicazione che invoca altri eseguibili. La vecchia superficie API risaliva a .NET Framework e mostrava la sua età. Non è un cambiamento che rompe la compatibilità — le vecchie API funzionano ancora — ma il nuovo codice dovrebbe preferire la nuova superficie.&lt;/p&gt;
&lt;p&gt;Per le applicazioni trimmate o gli scenari di compilazione AOT, il percorso &lt;code&gt;SafeProcessHandle&lt;/code&gt; è particolarmente benvenuto. La vecchia classe &lt;code&gt;Process&lt;/code&gt; portava molto codice pesante di reflection che complicava il trimming.&lt;/p&gt;
&lt;p&gt;Post originale: &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: Template Server MCP, Librerie Runtime-Async, API Processi</title><link>https://thedotnetblog.com/it/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/it/news/emiliano-montesdeoca/dotnet-11-preview-4-mcp-template-runtime-async-process-api/</guid><description>.NET 11 Preview 4 è disponibile. I punti salienti: il template del server MCP nell'SDK, le librerie runtime compilate con runtime-async, dotnet watch per mobile e una significativa espansione dell'API Processi.</description><content:encoded>&lt;p&gt;.NET 11 Preview 4 è disponibile. Ogni versione di una preview principale di .NET aggiunge un lungo elenco di elementi per runtime, SDK, librerie, ASP.NET Core, MAUI, C# ed Entity Framework. Invece di ripetere la lista completa, ecco le cose che hanno attirato la mia attenzione.&lt;/p&gt;
&lt;h2 id="il-template-del-server-mcp-arriva-nellsdk-di-net"&gt;Il Template del Server MCP Arriva nell&amp;rsquo;SDK di .NET&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;elemento più interessante: un template di progetto server MCP è ora incluso nell&amp;rsquo;SDK. Questo significa che &lt;code&gt;dotnet new mcp-server&lt;/code&gt; (o come finirà per chiamarsi il comando) funziona direttamente. Per chiunque stia costruendo tooling MCP in .NET, questo riduce considerevolmente la frizione iniziale. L&amp;rsquo;integrazione MCP nella toolchain della piattaforma segnala la direzione in cui si sta muovendo l&amp;rsquo;ecosistema.&lt;/p&gt;
&lt;h2 id="librerie-runtime-compilate-con-runtime-async"&gt;Librerie Runtime Compilate con Runtime-Async&lt;/h2&gt;
&lt;p&gt;Il runtime stesso ora compila le sue librerie standard usando la funzionalità runtime-async. È un cambiamento interno che influisce sulle prestazioni — le macchine a stati async nel runtime diventano più efficienti. L&amp;rsquo;importanza qui non riguarda cambiamenti visibili nell&amp;rsquo;API; è che runtime-async è abbastanza maturo da essere usato per la BCL stessa, il che è un segnale significativo sulla maturità della funzionalità.&lt;/p&gt;
&lt;h2 id="ottimizzazioni-jit-e-intrinseci-hardware"&gt;Ottimizzazioni JIT e Intrinseci Hardware&lt;/h2&gt;
&lt;p&gt;Preview 4 continua il lavoro sul JIT. Miglioramenti agli intrinseci hardware e alla generazione del codice arrivano qui — i dettagli si trovano nelle note di rilascio del runtime. Questi tipi di cambiamenti migliorano tipicamente il throughput nei cicli di calcolo intensivi senza modifiche al tuo codice.&lt;/p&gt;
&lt;h2 id="espansione-dellapi-processi"&gt;Espansione dell&amp;rsquo;API Processi&lt;/h2&gt;
&lt;p&gt;Un aggiornamento importante a &lt;code&gt;System.Diagnostics.Process&lt;/code&gt; arriva in Preview 4:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Process.RunAndCaptureTextAsync&lt;/code&gt; — avvia un processo, cattura stdout/stderr, attendi l&amp;rsquo;uscita, il tutto in una chiamata senza rischio di deadlock&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KillOnParentExit&lt;/code&gt; — accoppiamento leggero del ciclo di vita tra processo padre e figlio&lt;/li&gt;
&lt;li&gt;API basate su &lt;code&gt;SafeProcessHandle&lt;/code&gt; più compatibili con il trimmer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Se hai mai scritto codice ripetitivo per catturare l&amp;rsquo;output di un processo senza causare deadlock (lettura async di stdout &lt;em&gt;e&lt;/em&gt; stderr contemporaneamente), &lt;code&gt;RunAndCaptureTextAsync&lt;/code&gt; è l&amp;rsquo;API che mancava.&lt;/p&gt;
&lt;h2 id="dotnet-watch-per-android-e-ios"&gt;dotnet watch per Android e iOS&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;dotnet watch&lt;/code&gt; ora supporta la selezione del dispositivo per i progetti .NET MAUI Android e iOS. Iterazione più rapida su mobile senza gestire manualmente le connessioni ai dispositivi nel ciclo di build.&lt;/p&gt;
&lt;h2 id="api-di-compressione-basate-su-span"&gt;API di Compressione Basate su Span&lt;/h2&gt;
&lt;p&gt;Nuove API di encoder/decoder Deflate, ZLib e GZip basate su span arrivano nelle librerie. Meno allocazioni quando si lavora con dati compressi — rilevante se si effettua elaborazione dati ad alto throughput.&lt;/p&gt;
&lt;h2 id="provalo"&gt;Provalo&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://dotnet.microsoft.com/download/dotnet/11.0"&gt;Scarica .NET 11 Preview 4&lt;/a&gt; — è una preview, non pronta per la produzione, ma vale la pena eseguirla sui tuoi progetti per individuare eventuali problemi in anticipo prima del ciclo RC.&lt;/p&gt;
&lt;p&gt;Post originale: &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>