<?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/nl/tags/.net-11/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>nl</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/nl/tags/.net-11/index.xml" rel="self" type="application/rss+xml"/><item><title>.NET 11 repareert eindelijk de Proces-API</title><link>https://thedotnetblog.com/nl/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/nl/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</guid><description>System.Diagnostics.Process krijgt zijn grootste update in jaren. RunAndCaptureTextAsync, KillOnParentExit, SafeProcessHandle-API's en volledige controle over standaard handle-omleiding — geen deadlock-boilerplate meer.</description><content:encoded>&lt;p&gt;Elke .NET-ontwikkelaar die ooit een proces moest starten en de uitvoer ervan moest vastleggen, heeft een variatie op dezelfde gevaarlijke boilerplate geschreven: async lezen van stdout, async lezen van stderr, &lt;code&gt;WaitForExitAsync&lt;/code&gt;, vergeet niet beide streams te leegmaken of je krijgt een deadlock. Het is een bekende val die al jaren bestaat.&lt;/p&gt;
&lt;p&gt;.NET 11 lost dit eindelijk goed op.&lt;/p&gt;
&lt;h2 id="runandcapturetextasync"&gt;RunAndCaptureTextAsync&lt;/h2&gt;
&lt;p&gt;De belangrijkste toevoeging: één enkele statische methode die een proces start, stdout en stderr vastlegt, en wacht op beëindiging zonder 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;Één aanroep. Geen handmatig leegmaken van streams. Geen zorgvuldig geplaatste &lt;code&gt;WaitForExit&lt;/code&gt;. Als u gewoon iets wilt uitvoeren en de uitvoer wilt ontvangen, is dit de API die u wilt.&lt;/p&gt;
&lt;p&gt;Er is ook &lt;code&gt;Process.RunAsync&lt;/code&gt; voor het geval u wilt wachten op beëindiging zonder de uitvoer te vastleggen.&lt;/p&gt;
&lt;h2 id="killonparentexit"&gt;KillOnParentExit&lt;/h2&gt;
&lt;p&gt;Een veelvoorkomend probleem met gestarte processen: als het bovenliggende proces crasht of wordt beëindigd, blijven de onderliggende processen als wezen draaien. &lt;code&gt;KillOnParentExit&lt;/code&gt; stelt u in staat om bij het starten van het proces te declareren dat het onderliggende proces beëindigd moet worden wanneer het bovenliggende proces wordt beëindigd.&lt;/p&gt;
&lt;p&gt;Dit is een functie die op platformspecifieke manieren bestond (job objects op Windows, prctl op Linux) maar p/invoke of externe bibliotheken vereiste voor gebruik vanuit .NET. Nu is het een eersteklas eigenschap op &lt;code&gt;ProcessStartInfo&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="safeprocesshandle-gebaseerde-apis"&gt;SafeProcessHandle-gebaseerde API&amp;rsquo;s&lt;/h2&gt;
&lt;p&gt;Het nieuwe lichtgewicht API-oppervlak is gebouwd rond &lt;code&gt;SafeProcessHandle&lt;/code&gt; in plaats van de volledige klasse &lt;code&gt;Process&lt;/code&gt;. De volledige klasse &lt;code&gt;Process&lt;/code&gt; draagt veel toestand met zich mee en is moeilijk te trimmen — het &lt;code&gt;SafeProcessHandle&lt;/code&gt;-pad is trimmer-vriendelijker voor toepassingen die de uitvoergrootte moeten minimaliseren (WASM, native AOT).&lt;/p&gt;
&lt;h2 id="volledige-controle-over-handle-erfenis"&gt;Volledige Controle over Handle-erfenis&lt;/h2&gt;
&lt;p&gt;De update voegt ook gedetailleerde controle toe over welke handles een onderliggend proces erft en hoe standaard handles worden omgeleid. Voorheen kon u stdin/stdout/stderr omleiden, maar kon u niet precies specificeren welke handles op OS-niveau geërfd worden. De nieuwe API&amp;rsquo;s stellen die controle bloot.&lt;/p&gt;
&lt;h2 id="waarom-dit-belangrijk-is"&gt;Waarom Dit Belangrijk Is&lt;/h2&gt;
&lt;p&gt;De klasse &lt;code&gt;Process&lt;/code&gt; wordt gebruikt in tooling, buildsystemen, testrunners en elke toepassing die andere uitvoerbare bestanden aanroept. Het oude API-oppervlak dateerde uit het .NET Framework-tijdperk en toonde zijn leeftijd. Dit is geen afbrekende wijziging — de oude API&amp;rsquo;s werken nog steeds — maar nieuwe code moet de voorkeur geven aan het nieuwe oppervlak.&lt;/p&gt;
&lt;p&gt;Voor getrimde toepassingen of AOT-compilatiescenario&amp;rsquo;s is het &lt;code&gt;SafeProcessHandle&lt;/code&gt;-pad bijzonder welkom. De oude klasse &lt;code&gt;Process&lt;/code&gt; bracht veel reflection-zwaar code mee dat het trimmen bemoeilijkte.&lt;/p&gt;
&lt;p&gt;Originele post: &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: MCP-Serversjabloon, Runtime-Async Bibliotheken, Proces-API</title><link>https://thedotnetblog.com/nl/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/nl/news/emiliano-montesdeoca/dotnet-11-preview-4-mcp-template-runtime-async-process-api/</guid><description>.NET 11 Preview 4 is beschikbaar. De hoogtepunten: het MCP-serversjabloon in de SDK, runtimebibliotheken gecompileerd met runtime-async, dotnet watch voor mobiel en een grote uitbreiding van de Proces-API.</description><content:encoded>&lt;p&gt;.NET 11 Preview 4 is beschikbaar. Elke release van een belangrijke .NET-preview voegt een lange lijst items toe over de runtime, SDK, bibliotheken, ASP.NET Core, MAUI, C# en Entity Framework. In plaats van de volledige lijst te herhalen, hier de dingen die mij opvielen.&lt;/p&gt;
&lt;h2 id="het-mcp-serversjabloon-komt-in-de-net-sdk"&gt;Het MCP-Serversjabloon Komt in de .NET SDK&lt;/h2&gt;
&lt;p&gt;Het meest interessante item: een MCP-server projectsjabloon is nu opgenomen in de SDK. Dit betekent dat &lt;code&gt;dotnet new mcp-server&lt;/code&gt; (of hoe de opdracht uiteindelijk gaat heten) direct werkt. Voor iedereen die MCP-tooling in .NET bouwt, vermindert dit de initiële opstartmoeite aanzienlijk. MCP-integratie in de platform-toolchain geeft de richting aan die het ecosysteem op gaat.&lt;/p&gt;
&lt;h2 id="runtimebibliotheken-gecompileerd-met-runtime-async"&gt;Runtimebibliotheken Gecompileerd met Runtime-Async&lt;/h2&gt;
&lt;p&gt;De runtime zelf compileert nu zijn standaardbibliotheken met de runtime-async-functie. Dit is een interne wijziging die de prestaties beïnvloedt — async-toestandsmachines in de runtime worden efficiënter. Het belang hier ligt niet in zichtbare API-wijzigingen; het is dat runtime-async volwassen genoeg is om gebruikt te worden voor de BCL zelf, wat een betekenisvol signaal is over de gereedheid van de functie.&lt;/p&gt;
&lt;h2 id="jit-optimalisaties-en-hardware-intrinsics"&gt;JIT-optimalisaties en Hardware Intrinsics&lt;/h2&gt;
&lt;p&gt;Preview 4 zet het JIT-werk voort. Verbeteringen in hardware intrinsics en codegeneratie worden hier geleverd — details zijn te vinden in de runtime-releasenotes. Dit soort wijzigingen verbetert doorgaans de doorvoer bij rekenintensieve lussen zonder codewijzigingen van uw kant.&lt;/p&gt;
&lt;h2 id="uitbreiding-van-de-proces-api"&gt;Uitbreiding van de Proces-API&lt;/h2&gt;
&lt;p&gt;Een grote update voor &lt;code&gt;System.Diagnostics.Process&lt;/code&gt; komt in Preview 4:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Process.RunAndCaptureTextAsync&lt;/code&gt; — start een proces, leg stdout/stderr vast, wacht op afsluiting, alles in één aanroep zonder deadlockrisico&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KillOnParentExit&lt;/code&gt; — lichte levensduurkoppeling tussen ouderprocesen kindprocessen&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SafeProcessHandle&lt;/code&gt;-gebaseerde API&amp;rsquo;s die meer trimmer-vriendelijk zijn&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Als u ooit boilerplate hebt geschreven om procesuitvoer vast te leggen zonder deadlocks te veroorzaken (asynchrone lezing van stdout &lt;em&gt;en&lt;/em&gt; stderr tegelijkertijd), dan is &lt;code&gt;RunAndCaptureTextAsync&lt;/code&gt; de API die u miste.&lt;/p&gt;
&lt;h2 id="dotnet-watch-voor-android-en-ios"&gt;dotnet watch voor Android en iOS&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;dotnet watch&lt;/code&gt; ondersteunt nu apparaatselectie voor .NET MAUI Android- en iOS-projecten. Snellere iteratie op mobiel zonder apparaatverbindingen handmatig te beheren in de buildlus.&lt;/p&gt;
&lt;h2 id="span-gebaseerde-compressie-apis"&gt;Span-gebaseerde Compressie-API&amp;rsquo;s&lt;/h2&gt;
&lt;p&gt;Nieuwe span-gebaseerde Deflate-, ZLib- en GZip-encoder/decoder-API&amp;rsquo;s komen in de bibliotheken. Minder allocaties bij het verwerken van gecomprimeerde gegevens — relevant als u gegevensverwerkingen met hoge doorvoer uitvoert.&lt;/p&gt;
&lt;h2 id="probeer-het-uit"&gt;Probeer het Uit&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://dotnet.microsoft.com/download/dotnet/11.0"&gt;Download .NET 11 Preview 4&lt;/a&gt; — het is een preview, niet productiongereed, maar het is de moeite waard om het tegen uw projecten te draaien om problemen vroeg te ontdekken vóór de RC-cyclus.&lt;/p&gt;
&lt;p&gt;Originele post: &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>