<?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/ca/tags/.net-aspire/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ca</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/ca/tags/.net-aspire/index.xml" rel="self" type="application/rss+xml"/><item><title>Aspire 13.2 incorpora Bun, millora els contenidors i redueix la fricció en la depuració</title><link>https://thedotnetblog.com/ca/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/ca/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</guid><description>Aspire 13.2 afegeix suport de primera classe per a Bun a les apps Vite, millora la fiabilitat de Yarn i incorpora millores de contenidors que fan que el comportament local sigui més fidel. Aquí tens què ha canviat realment i per què importa.</description><content:encoded>&lt;p&gt;&lt;em&gt;Aquesta publicació ha estat traduïda automàticament. Per a la versió original, &lt;a href="https://thedotnetblog.com/ca/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/"&gt;fes clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Si fa temps que construeixes backends .NET amb frontends JavaScript a Aspire, la 13.2 és el tipus d&amp;rsquo;actualització que et millora el dia sense fer gaire soroll. Res de paradigmes nous cridaners. Només millores sòlides per a coses que eren lleugerament molestes.&lt;/p&gt;
&lt;p&gt;Anem a veure què ha arribat realment.&lt;/p&gt;
&lt;h2 id="bun-ja-és-un-ciutadà-de-primera-classe"&gt;Bun ja és un ciutadà de primera classe&lt;/h2&gt;
&lt;p&gt;La gran novetat: suport per a Bun en apps Vite a Aspire. Una crida fluida, i llestos.&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;Si el teu equip ja fa servir Bun — i potser sí, tenint en compte uns temps d&amp;rsquo;instal·lació molt més ràpids i un arrencat molt més àgil — Aspire ja no et fa remar contra corrent. Abans, Aspire assumia npm i havies de fer-ne voltes. Ara &lt;code&gt;.withBun()&lt;/code&gt; és una opció de primera classe al costat de &lt;code&gt;.withYarn()&lt;/code&gt; i del comportament predeterminat de npm.&lt;/p&gt;
&lt;p&gt;Per què importa? Perquè la velocitat de les eines JavaScript afecta directament el bucle intern de desenvolupament. Si el teu frontend triga 30 segons a instal·lar dependències cada cop que arranques un entorn nou, això s&amp;rsquo;acumula. Bun retalla això de manera dràstica.&lt;/p&gt;
&lt;p&gt;Les equivalències d&amp;rsquo;AppHost en C# estan documentades a &lt;a href="https://aspire.dev/integrations/frameworks/javascript/#use-bun"&gt;aspire.dev&lt;/a&gt; si prefereixes escriure en C# — s&amp;rsquo;apliquen tots els mateixos patrons.&lt;/p&gt;
&lt;h2 id="yarn-ha-guanyat-fiabilitat"&gt;Yarn ha guanyat fiabilitat&lt;/h2&gt;
&lt;p&gt;Bun s&amp;rsquo;endú els titulars, però els usuaris de Yarn reben una cosa potser més important: menys fallades misterioses. Aspire 13.2 millora la fiabilitat de &lt;code&gt;withYarn()&lt;/code&gt; amb &lt;code&gt;addViteApp()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Aquestes correccions no semblen emocionants fins que has passat 20 minuts depurant per què un recurs frontal basat en Yarn no arrencava. Dona-ho per arreglat.&lt;/p&gt;
&lt;h2 id="publicació-de-contenidors-que-realment-pots-entendre"&gt;Publicació de contenidors que realment pots entendre&lt;/h2&gt;
&lt;p&gt;Dues millores de contenidors que val la pena conèixer:&lt;/p&gt;
&lt;h3 id="política-de-pull-explícita"&gt;Política de pull explícita&lt;/h3&gt;
&lt;p&gt;La publicació amb Docker Compose ara admet &lt;code&gt;PullPolicy&lt;/code&gt;, inclosa l&amp;rsquo;opció &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;Aquest és el flux de treball de «utilitza la imatge que ja he construït i deixa el registre en pau». Molt útil quan iteres localment sobre imatges que construeixes i publiques manualment, o quan el teu CI genera una imatge i vols que Compose faci servir exactament aquella sense descarregar res remot d&amp;rsquo;amagat.&lt;/p&gt;
&lt;h3 id="els-volums-de-postgresql-18-tornen-a-funcionar"&gt;Els volums de PostgreSQL 18+ tornen a funcionar&lt;/h3&gt;
&lt;p&gt;PostgreSQL 18 va canviar la disposició interna del directori de dades. Això va trencar el mapatge de volums a Aspire de manera silenciosa — el volum de dades es configurava però la persistència en realitat no funcionava bé. La 13.2 ho arregla.&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;Si estàs executant PostgreSQL 18 o posterior amb un volum de dades, actualitza a Aspire 13.2 i no hi pensis més.&lt;/p&gt;
&lt;h2 id="millores-de-qualitat-de-vida-en-la-depuració"&gt;Millores de qualitat de vida en la depuració&lt;/h2&gt;
&lt;p&gt;Algunes coses que fan menys frustrant fer pas a pas una sessió d&amp;rsquo;AppHost:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;DebuggerDisplayAttribute&lt;/code&gt; als tipus core&lt;/strong&gt; — &lt;code&gt;DistributedApplication&lt;/code&gt;, els recursos i les expressions d&amp;rsquo;endpoint ara mostren valors útils al depurador en comptes de fer-te rebuscar entre arbres d&amp;rsquo;objectes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Millors missatges de fallada de &lt;code&gt;WaitFor&lt;/code&gt;&lt;/strong&gt; — quan els recursos no arranquen, el context de l&amp;rsquo;error ara sí que és útil&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;BeforeResourceStartedEvent&lt;/code&gt; s&amp;rsquo;activa en el moment correcte&lt;/strong&gt; — només quan un recurs realment comença a arrencar, no en transicions d&amp;rsquo;estat no relacionades&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;launchSettings.json&lt;/code&gt; és més robust&lt;/strong&gt; — menys possibilitats que una configuració malformada corrompi l&amp;rsquo;arrencada del teu entorn de desenvolupament&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cap d&amp;rsquo;aquestes millores no és individualment espectacular, però en conjunt eliminen fricció de l&amp;rsquo;experiència de depuració. Si alguna vegada has hagut de baixar tres nivells dins d&amp;rsquo;un objecte de recurs d&amp;rsquo;Aspire per esbrinar quin endpoint feia servir, la millora del debugger display ja val l&amp;rsquo;actualització.&lt;/p&gt;
&lt;h2 id="resumint"&gt;Resumint&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 és una versió centrada en la qualitat. El suport de Bun és el titular, però les millores de contenidors i depuració són el que farà que la feina diària sigui més fluida. Val la pena actualitzar, sobretot si fas servir PostgreSQL 18 amb volums de dades.&lt;/p&gt;
&lt;p&gt;Tots els detalls al &lt;a href="https://devblogs.microsoft.com/aspire/aspire-bun-support-and-container-enhancements/"&gt;post original de David Pine&lt;/a&gt; i a la documentació de &lt;a href="https://aspire.dev/whats-new/aspire-13-2/"&gt;novetats d&amp;rsquo;Aspire 13.2&lt;/a&gt;.&lt;/p&gt;</content:encoded></item></channel></rss>