<?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 Aspire | The .NET Blog</title><link>https://thedotnetblog.com/nl/tags/.net-aspire/</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>Fri, 24 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/nl/tags/.net-aspire/index.xml" rel="self" type="application/rss+xml"/><item><title>Aspire 13.2 krijgt Bun, betere containers en minder debugfrictie</title><link>https://thedotnetblog.com/nl/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</link><pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/nl/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</guid><description>Aspire 13.2 voegt eersteklas Bun-ondersteuning toe voor Vite-apps, fixt de betrouwbaarheid van Yarn en levert containerverbeteringen die lokaal gedrag eerlijker maken. Dit is wat er echt veranderde en waarom dat telt.</description><content:encoded>&lt;p&gt;&lt;em&gt;Dit bericht is automatisch vertaald. Klik &lt;a href="https://thedotnetblog.com/nl/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/"&gt;hier&lt;/a&gt; voor de originele versie.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Als je in Aspire .NET-backends met JavaScript-frontends bouwt, is 13.2 zo&amp;rsquo;n update die je dag stilletjes beter maakt. Geen opvallende nieuwe paradigma&amp;rsquo;s. Gewoon stevige verbeteringen aan dingen die licht irritant waren.&lt;/p&gt;
&lt;p&gt;Laten we bekijken wat er echt is aangekomen.&lt;/p&gt;
&lt;h2 id="bun-is-nu-eersteklas"&gt;Bun is nu eersteklas&lt;/h2&gt;
&lt;p&gt;De headline-feature: Bun-ondersteuning voor Vite-apps in Aspire. Eén vloeiende call, klaar.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// TypeScript AppHost
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addViteApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./frontend&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withBun&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;run&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;Als je team al Bun gebruikt — en waarschijnlijk wel, gezien de veel snellere installatietijden en opstartsnelheid — dan dwingt Aspire je niet langer tegen de stroom in te zwemmen. Voorheen ging Aspire uit van npm en moest je daar omheen werken. Nu is &lt;code&gt;.withBun()&lt;/code&gt; een eersteklas optie naast &lt;code&gt;.withYarn()&lt;/code&gt; en het standaardgedrag van npm.&lt;/p&gt;
&lt;p&gt;Waarom maakt dat uit? Omdat de snelheid van JavaScript-tooling rechtstreeks invloed heeft op je inner dev loop. Als je frontend 30 seconden nodig heeft om dependencies te installeren telkens wanneer je een nieuwe omgeving opzet, tikt dat aan. Bun haalt daar flink wat vanaf.&lt;/p&gt;
&lt;p&gt;De C#-equivalenten voor AppHost staan gedocumenteerd op &lt;a href="https://aspire.dev/integrations/frameworks/javascript/#use-bun"&gt;aspire.dev&lt;/a&gt; als je liever in C# schrijft — dezelfde patronen gelden gewoon.&lt;/p&gt;
&lt;h2 id="yarn-is-betrouwbaarder-geworden"&gt;Yarn is betrouwbaarder geworden&lt;/h2&gt;
&lt;p&gt;Bun pakt de aandacht, maar Yarn-gebruikers krijgen iets dat misschien nog belangrijker is: minder mysterieuze fouten. Aspire 13.2 verbetert de betrouwbaarheid van &lt;code&gt;withYarn()&lt;/code&gt; met &lt;code&gt;addViteApp()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Dit soort fixes klinkt pas spannend als je 20 minuten hebt zitten uitzoeken waarom een Yarn-gestuurde frontend resource niet wilde starten. Beschouw het als opgelost.&lt;/p&gt;
&lt;h2 id="containerpublicatie-waar-je-echt-iets-aan-hebt"&gt;Containerpublicatie waar je echt iets aan hebt&lt;/h2&gt;
&lt;p&gt;Twee containerverbeteringen die je moet kennen:&lt;/p&gt;
&lt;h3 id="expliciet-pullbeleid"&gt;Expliciet pullbeleid&lt;/h3&gt;
&lt;p&gt;Docker Compose-publicatie ondersteunt nu &lt;code&gt;PullPolicy&lt;/code&gt;, inclusief de optie &lt;code&gt;Never&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ImagePullPolicy&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="kr"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;./.modules/aspire.js&amp;#39;&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&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="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addDockerComposeEnvironment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;compose&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;worker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addContainer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;worker&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;myorg/worker:latest&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withImagePullPolicy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ImagePullPolicy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Never&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;run&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;Dit is de workflow van: &amp;ldquo;gebruik gewoon het image dat ik al gebouwd heb en laat de registry erbuiten.&amp;rdquo; Superhandig als je lokaal iteratief werkt aan images die je handmatig bouwt en publiceert, of wanneer je CI een image oplevert en je Compose exact dát image wilt laten gebruiken zonder stiekem een remote pull.&lt;/p&gt;
&lt;h3 id="postgresql-18-volumes-werken-weer"&gt;PostgreSQL 18+ volumes werken weer&lt;/h3&gt;
&lt;p&gt;PostgreSQL 18 veranderde de interne indeling van de datadirectory. Daardoor brak volume-mapping in Aspire stilletjes — je datavolume werd wel opgezet, maar persistentie werkte niet goed. 13.2 fixt dat.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;postgres&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addPostgres&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;postgres&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withDataVolume&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;isReadOnly&lt;/span&gt;: &lt;span class="kt"&gt;false&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;Als je PostgreSQL 18 of later met een datavolume draait, update dan naar Aspire 13.2 en denk er niet meer over na.&lt;/p&gt;
&lt;h2 id="debugging-die-net-wat-fijner-voelt"&gt;Debugging die net wat fijner voelt&lt;/h2&gt;
&lt;p&gt;Een paar dingen die het doorstappen van een AppHost-sessie minder frustrerend maken:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;DebuggerDisplayAttribute&lt;/code&gt; op core types&lt;/strong&gt; — &lt;code&gt;DistributedApplication&lt;/code&gt;, resources en endpoint-expressions tonen nu nuttige waarden in de debugger in plaats van dat je door object trees moet graven&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Betere &lt;code&gt;WaitFor&lt;/code&gt;-foutmeldingen&lt;/strong&gt; — als resources niet starten, is de foutcontext nu echt bruikbaar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;BeforeResourceStartedEvent&lt;/code&gt; triggert op het juiste moment&lt;/strong&gt; — alleen wanneer een resource daadwerkelijk begint te starten, niet bij losse statusovergangen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;launchSettings.json&lt;/code&gt; is robuuster&lt;/strong&gt; — minder kans dat een foutieve instelling je dev-startup kapotmaakt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Geen van deze verbeteringen is losstaand wereldschokkend, maar samen halen ze frictie uit de debugervaring. Als je ooit drie lagen diep in een Aspire-resource-object hebt moeten duiken om te achterhalen welk endpoint het gebruikte, is die debugger-displayverbetering alleen al de update waard.&lt;/p&gt;
&lt;h2 id="afsluitend"&gt;Afsluitend&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 is een release die op kwaliteit focust. Bun-ondersteuning is de headline, maar de container- en debugverbeteringen zijn wat je dagelijkse werk soepeler maken. Zeker de moeite waard om te updaten — vooral als je PostgreSQL 18 met datavolumes gebruikt.&lt;/p&gt;
&lt;p&gt;De volledige details staan in het &lt;a href="https://devblogs.microsoft.com/aspire/aspire-bun-support-and-container-enhancements/"&gt;oorspronkelijke bericht van David Pine&lt;/a&gt; en de &lt;a href="https://aspire.dev/whats-new/aspire-13-2/"&gt;Aspire 13.2 what&amp;rsquo;s new-documentatie&lt;/a&gt;.&lt;/p&gt;</content:encoded></item></channel></rss>