<?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/id/tags/.net-aspire/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>id</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/id/tags/.net-aspire/index.xml" rel="self" type="application/rss+xml"/><item><title>Aspire 13.2 Menambahkan Bun, Kontainer yang Lebih Baik, dan Friksi Debugging yang Lebih Rendah</title><link>https://thedotnetblog.com/id/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/id/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</guid><description>Aspire 13.2 menambahkan dukungan kelas utama untuk Bun pada aplikasi Vite, memperbaiki keandalan Yarn, dan menghadirkan peningkatan kontainer yang membuat perilaku development lokal lebih jujur. Berikut apa yang benar-benar berubah dan kenapa itu penting.</description><content:encoded>&lt;p&gt;&lt;em&gt;Postingan ini diterjemahkan secara otomatis. Untuk versi aslinya, &lt;a href="https://thedotnetblog.com/id/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/"&gt;klik di sini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Kalau Anda sudah membangun backend .NET dengan frontend JavaScript di Aspire, 13.2 adalah jenis pembaruan yang diam-diam membuat hari Anda lebih baik. Tidak ada paradigma baru yang heboh. Hanya peningkatan solid pada hal-hal yang sedikit mengganggu.&lt;/p&gt;
&lt;p&gt;Mari lihat apa yang benar-benar hadir.&lt;/p&gt;
&lt;h2 id="bun-kini-dukungan-kelas-utama"&gt;Bun Kini Dukungan Kelas Utama&lt;/h2&gt;
&lt;p&gt;Fitur utamanya: dukungan Bun untuk aplikasi Vite di Aspire. Satu panggilan fluent, selesai.&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;Kalau tim Anda sudah memakai Bun — dan mungkin memang iya, mengingat waktu instalasinya jauh lebih cepat serta startup-nya lebih gesit — Aspire sekarang tidak lagi memaksa Anda berenang melawan arus. Sebelumnya, Aspire mengasumsikan npm dan Anda harus membuat workaround. Sekarang &lt;code&gt;.withBun()&lt;/code&gt; adalah opsi kelas utama, berdampingan dengan &lt;code&gt;.withYarn()&lt;/code&gt; dan perilaku default npm.&lt;/p&gt;
&lt;p&gt;Kenapa ini penting? Karena kecepatan tooling JavaScript langsung memengaruhi inner dev loop Anda. Kalau frontend Anda butuh 30 detik untuk memasang dependensi setiap kali membuat environment baru, semuanya akan menumpuk. Bun memangkas itu secara drastis.&lt;/p&gt;
&lt;p&gt;Padanan AppHost dalam C# didokumentasikan di &lt;a href="https://aspire.dev/integrations/frameworks/javascript/#use-bun"&gt;aspire.dev&lt;/a&gt; kalau Anda lebih suka menulis dalam C# — pola yang sama tetap berlaku.&lt;/p&gt;
&lt;h2 id="yarn-jadi-lebih-andal"&gt;Yarn Jadi Lebih Andal&lt;/h2&gt;
&lt;p&gt;Bun memang jadi sorotan, tapi pengguna Yarn mendapat sesuatu yang mungkin lebih penting: lebih sedikit kegagalan misterius. Aspire 13.2 meningkatkan keandalan &lt;code&gt;withYarn()&lt;/code&gt; bersama &lt;code&gt;addViteApp()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Perbaikan seperti ini tidak terdengar menarik sampai Anda menghabiskan 20 menit mencari tahu kenapa resource frontend berbasis Yarn tidak mau start. Anggap saja sudah beres.&lt;/p&gt;
&lt;h2 id="penerbitan-kontainer-yang-benar-benar-bisa-anda-pahami"&gt;Penerbitan Kontainer yang Benar-Benar Bisa Anda Pahami&lt;/h2&gt;
&lt;p&gt;Ada dua peningkatan kontainer yang layak diketahui:&lt;/p&gt;
&lt;h3 id="kebijakan-pull-yang-eksplisit"&gt;Kebijakan Pull yang Eksplisit&lt;/h3&gt;
&lt;p&gt;Penerbitan Docker Compose sekarang mendukung &lt;code&gt;PullPolicy&lt;/code&gt;, termasuk opsi &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;Ini adalah alur kerja yang pada dasarnya berkata, &amp;ldquo;pakai image yang sudah saya build dan jangan bawa registry ke dalamnya.&amp;rdquo; Sangat berguna saat Anda melakukan iterasi lokal pada image yang Anda build dan publish secara manual, atau saat CI menghasilkan image dan Anda ingin Compose memakai image itu persis, tanpa menyelinapkan pull jarak jauh.&lt;/p&gt;
&lt;h3 id="volume-postgresql-18-kembali-berfungsi"&gt;Volume PostgreSQL 18+ Kembali Berfungsi&lt;/h3&gt;
&lt;p&gt;PostgreSQL 18 mengubah tata letak internal direktori datanya. Itu mematahkan mapping volume di Aspire secara diam-diam — volume data Anda disiapkan, tetapi persistence sebenarnya tidak berjalan dengan benar. 13.2 memperbaikinya.&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;Kalau Anda menjalankan PostgreSQL 18 atau lebih baru dengan data volume, perbarui ke Aspire 13.2 dan jangan pikirkan lagi.&lt;/p&gt;
&lt;h2 id="peningkatan-kualitas-hidup-saat-debugging"&gt;Peningkatan Kualitas Hidup Saat Debugging&lt;/h2&gt;
&lt;p&gt;Beberapa hal yang membuat sesi AppHost saat step-through jadi tidak terlalu menjengkelkan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;DebuggerDisplayAttribute&lt;/code&gt; pada tipe inti&lt;/strong&gt; — &lt;code&gt;DistributedApplication&lt;/code&gt;, resource, dan ekspresi endpoint sekarang menampilkan nilai yang berguna di debugger, bukan memaksa Anda menyusuri pohon objek&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pesan kegagalan &lt;code&gt;WaitFor&lt;/code&gt; yang lebih baik&lt;/strong&gt; — saat resource gagal start, konteks error sekarang benar-benar membantu&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;BeforeResourceStartedEvent&lt;/code&gt; dipicu pada waktu yang tepat&lt;/strong&gt; — hanya saat resource benar-benar mulai, bukan pada transisi state yang tidak relevan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;launchSettings.json&lt;/code&gt; lebih tangguh&lt;/strong&gt; — lebih kecil kemungkinan konfigurasi yang rusak merusak startup dev Anda&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Masing-masing perubahan ini tidak terlalu heboh, tetapi bersama-sama mereka mengurangi friksi dalam pengalaman debugging. Kalau Anda pernah harus menyelam tiga tingkat ke dalam objek resource Aspire hanya untuk mencari tahu endpoint mana yang dipakai, peningkatan debugger display saja sudah layak untuk update.&lt;/p&gt;
&lt;h2 id="penutup"&gt;Penutup&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 adalah rilis yang fokus pada kualitas. Dukungan Bun memang jadi headline, tetapi peningkatan kontainer dan debugging-lah yang akan membuat pekerjaan harian terasa lebih mulus. Layak diperbarui — terutama jika Anda memakai PostgreSQL 18 dengan data volume.&lt;/p&gt;
&lt;p&gt;Detail lengkap ada di &lt;a href="https://devblogs.microsoft.com/aspire/aspire-bun-support-and-container-enhancements/"&gt;post asli oleh David Pine&lt;/a&gt; dan &lt;a href="https://aspire.dev/whats-new/aspire-13-2/"&gt;dokumen what&amp;rsquo;s new Aspire 13.2&lt;/a&gt;.&lt;/p&gt;</content:encoded></item></channel></rss>