<?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>Cli | The .NET Blog</title><link>https://thedotnetblog.com/tr/tags/cli/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>tr</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Thu, 23 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/tr/tags/cli/index.xml" rel="self" type="application/rss+xml"/><item><title>Windows App Dev CLI v0.3: Terminalden F5 Hata Ayıklama ve Ajanlar için UI Otomasyonu</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/</guid><description>Windows App Development CLI v0.3, terminalden hata ayıklama başlatmak için winapp run, UI otomasyonu için winapp ui ve paketlenmiş uygulamalarla dotnet run'ı çalıştıran yeni bir NuGet paketi getiriyor.</description><content:encoded>&lt;p&gt;&lt;em&gt;Bu gönderi otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio&amp;rsquo;nun F5 deneyimi harika. Ama yalnızca paketlenmiş bir Windows uygulamasını başlatıp hata ayıklamak için VS&amp;rsquo;yi açmak — bir CI boru hattında, otomatik bir iş akışında veya bir yapay zeka ajanı testleri çalıştırırken — fazla ağır bir yük.&lt;/p&gt;
&lt;p&gt;Windows App Development CLI v0.3 &lt;a href="https://devblogs.microsoft.com/ifdef-windows/windows-app-development-cli-v0-3-new-run-and-ui-commands-plus-dotnet-run-support-for-packaged-apps/"&gt;yayınlandı&lt;/a&gt; ve bunu iki temel özellikle doğrudan ele alıyor: &lt;code&gt;winapp run&lt;/code&gt; ve &lt;code&gt;winapp ui&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="winapp-run-her-yerden-f5"&gt;winapp run: Her yerden F5&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;winapp run&lt;/code&gt; paketlenmemiş bir uygulama klasörü ve manifest alır; VS&amp;rsquo;nin hata ayıklama başlatmasında yaptığı her şeyi yapar: loose paket kaydeder, uygulamayı başlatır ve yeniden dağıtımlar arasında &lt;code&gt;LocalState&lt;/code&gt;&amp;lsquo;i korur.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Uygulamayı derleyin, ardından paketlenmiş uygulama olarak çalıştırın&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winapp run ./bin/Debug
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;WinUI, WPF, WinForms, Console, Avalonia ve daha fazlası için çalışır. Modlar hem geliştiriciler hem de otomatik iş akışları için tasarlanmıştır:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--detach&lt;/code&gt;&lt;/strong&gt;: Başlatır ve hemen terminale kontrolü geri döndürür. CI için ideal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--unregister-on-exit&lt;/code&gt;&lt;/strong&gt;: Uygulama kapatıldığında kayıtlı paketi temizler.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--debug-output&lt;/code&gt;&lt;/strong&gt;: &lt;code&gt;OutputDebugString&lt;/code&gt; mesajlarını ve istisnaları gerçek zamanlı yakalar.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="yeni-nuget-paketi-paketlenmiş-uygulamalar-için-dotnet-run"&gt;Yeni NuGet Paketi: Paketlenmiş uygulamalar için dotnet run&lt;/h2&gt;
&lt;p&gt;.NET geliştiricileri için yeni bir NuGet paketi var: &lt;code&gt;Microsoft.Windows.SDK.BuildTools.WinApp&lt;/code&gt;. Kurulumdan sonra &lt;code&gt;dotnet run&lt;/code&gt; tüm iç döngüyü yönetir: derleme, loose-layout paketi hazırlama, Windows&amp;rsquo;ta kayıt ve başlatma — tek adımda.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winapp init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# veya&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotnet add package Microsoft.Windows.SDK.BuildTools.WinApp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="winapp-ui-komut-satırından-ui-otomasyonu"&gt;winapp ui: Komut satırından UI Otomasyonu&lt;/h2&gt;
&lt;p&gt;Bu, ajan senaryolarını açan özellik. &lt;code&gt;winapp ui&lt;/code&gt;, terminalden çalışan herhangi bir Windows uygulamasına (WPF, WinForms, Win32, Electron, WinUI3) tam UI Automation erişimi sağlar.&lt;/p&gt;
&lt;p&gt;Yapılabilecekler:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tüm üst düzey pencereleri listele&lt;/li&gt;
&lt;li&gt;Herhangi bir pencerenin tam UI Automation ağacında gezin&lt;/li&gt;
&lt;li&gt;Ad, tür veya otomasyon kimliğine göre öğe ara&lt;/li&gt;
&lt;li&gt;Tıkla, çağır ve değer ayarla&lt;/li&gt;
&lt;li&gt;Ekran görüntüsü al&lt;/li&gt;
&lt;li&gt;Öğelerin görünmesini bekle — test senkronizasyonu için ideal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;winapp ui&lt;/code&gt; ile &lt;code&gt;winapp run&lt;/code&gt;&amp;lsquo;ı birleştirmek, terminalden eksiksiz bir derleme → başlatma → doğrulama iş akışı sağlar. Bir ajan uygulamayı çalıştırabilir, UI durumunu inceleyebilir, programatik olarak etkileşime girebilir ve sonucu doğrulayabilir.&lt;/p&gt;
&lt;h2 id="diğer-yenilikler"&gt;Diğer yenilikler&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp unregister&lt;/code&gt;&lt;/strong&gt;: Tamamlandığında yandan yüklenmiş paketi kaldırır.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp manifest add-alias&lt;/code&gt;&lt;/strong&gt;: Terminalden adıyla uygulama başlatmak için takma ad ekler.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sekme tamamlama&lt;/strong&gt;: PowerShell tamamlamayı tek komutla yapılandırın.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="nasıl-edinilir"&gt;Nasıl edinilir&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winget install Microsoft.WinAppCli
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# veya&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g @microsoft/winappcli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;CLI genel önizleme aşamasında. Tam belgeleme için &lt;a href="https://github.com/microsoft/WinAppCli"&gt;GitHub deposuna&lt;/a&gt;, tüm ayrıntılar için &lt;a href="https://devblogs.microsoft.com/ifdef-windows/windows-app-development-cli-v0-3-new-run-and-ui-commands-plus-dotnet-run-support-for-packaged-apps/"&gt;orijinal duyuruya&lt;/a&gt; bakın.&lt;/p&gt;</content:encoded></item><item><title>Terminalinizi Serbest Bırakın: Aspire'ın Detached Modu İş Akışını Değiştiriyor</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/</guid><description>Aspire 13.2, AppHost'unuzu arka planda çalıştırmanıza ve terminalinizi geri almanıza olanak tanıyor. Yeni CLI komutları ve agent desteğiyle birlikte bu, göründüğünden çok daha büyük bir gelişme.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bir Aspire AppHost çalıştırdığınız her seferinde terminaliniz kayboluyor. Kilitli. Ctrl+C ile çıkana kadar meşgul. Hızlı bir komut çalıştırmanız mı gerekiyor? Yeni bir sekme açın. Logları kontrol etmek ister misiniz? Başka bir sekme. Bu küçük sürtünme hızla birikerek büyüyor.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 bunu düzeltiyor. James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;tüm ayrıntıları yazdı&lt;/a&gt; ve dürüstçe söylemek gerekirse bu, çalışma şeklinizi anında değiştiren özelliklerden biri.&lt;/p&gt;
&lt;h2 id="detached-mod-bir-komut-terminal-geri"&gt;Detached mod: bir komut, terminal geri&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bu, &lt;code&gt;aspire run --detach&lt;/code&gt; için kısayol. AppHost&amp;rsquo;unuz arka planda başlıyor ve terminalinizi anında geri alıyorsunuz. Ekstra sekme yok. Terminal çoğullayıcı yok. Sadece prompt&amp;rsquo;unuz, hazır ve bekliyor.&lt;/p&gt;
&lt;h2 id="çalışanları-yönetmek"&gt;Çalışanları yönetmek&lt;/h2&gt;
&lt;p&gt;İşte şu an — arka planda çalıştırmak yalnızca orada ne olduğunu gerçekten yönetebiliyorsanız işe yarıyor. Aspire 13.2 tam bunun için eksiksiz bir CLI komut seti sunuyor:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Çalışan tüm AppHost&amp;#39;ları listele&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire ps
&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="c1"&gt;# Belirli bir AppHost&amp;#39;un durumunu incele&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire describe
&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="c1"&gt;# Çalışan bir AppHost&amp;#39;tan log akışı al&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire logs
&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="c1"&gt;# Belirli bir AppHost&amp;#39;u durdur&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bu, Aspire CLI&amp;rsquo;ı gerçek anlamda bir süreç yöneticisine dönüştürüyor. Birden fazla AppHost başlatabilir, durumlarını kontrol edebilir, loglarını takip edebilir ve bunları kapatabilirsiniz — hepsi tek bir terminal oturumundan.&lt;/p&gt;
&lt;h2 id="isolated-modla-birleştirin"&gt;Isolated modla birleştirin&lt;/h2&gt;
&lt;p&gt;Detached mod, isolated modla doğal olarak uyum içinde çalışır. Port çakışması olmadan aynı projenin iki örneğini arka planda çalıştırmak ister misiniz?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire start --isolated
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire start --isolated
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Her biri rastgele portlar, ayrı secret&amp;rsquo;lar ve kendi yaşam döngüsü alıyor. Her ikisini görmek için &lt;code&gt;aspire ps&lt;/code&gt;, işi bitenini kapatmak için &lt;code&gt;aspire stop&lt;/code&gt; kullanın.&lt;/p&gt;
&lt;h2 id="bu-neden-kodlama-ajanları-için-büyük-bir-gelişme"&gt;Bu neden kodlama ajanları için büyük bir gelişme&lt;/h2&gt;
&lt;p&gt;İşte gerçekten ilgi çekici olan kısım. Terminalinizde çalışan bir kodlama ajanı artık şunları yapabiliyor:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;aspire start&lt;/code&gt; ile uygulamayı başlatmak&lt;/li&gt;
&lt;li&gt;&lt;code&gt;aspire describe&lt;/code&gt; ile durumunu sorgulamak&lt;/li&gt;
&lt;li&gt;Sorunları teşhis etmek için &lt;code&gt;aspire logs&lt;/code&gt; ile logları kontrol etmek&lt;/li&gt;
&lt;li&gt;İşi bittiğinde &lt;code&gt;aspire stop&lt;/code&gt; ile durdurmak&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Terminal oturumunu kaybetmeden. Detached moddan önce, AppHost&amp;rsquo;unuzu çalıştıran bir ajan kendi terminaline erişimini kaybederdi. Artık başlatabilir, gözlemleyebilir, yineleyebilir ve temizleyebilir — tam olarak özerk bir ajanın çalışmasını isteyeceğiniz şekilde.&lt;/p&gt;
&lt;p&gt;Aspire ekibi bunu benimsedi. &lt;code&gt;aspire agent init&lt;/code&gt; çalıştırmak, ajanlara bu komutları öğreten bir Aspire skill dosyası kuruyor. Bu sayede Copilot&amp;rsquo;un kodlama ajanı gibi araçlar Aspire iş yüklerinizi kutudan çıkar çıkmaz yönetebiliyor.&lt;/p&gt;
&lt;h2 id="özet"&gt;Özet&lt;/h2&gt;
&lt;p&gt;Detached mod, basit bir bayrak kılığında gizlenmiş bir iş akışı yükseltmesi. Terminaller arasında bağlam geçişlerini bırakıyorsunuz, ajanlar kendilerini bloke etmekten kurtuluyor ve yeni CLI komutları çalışanlar hakkında gerçek görünürlük sağlıyor. Pratik, temiz ve günlük geliştirme döngüsünü belirgin biçimde daha akıcı hale getiriyor.&lt;/p&gt;
&lt;p&gt;Tüm ayrıntılar için &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;tam yazıyı&lt;/a&gt; okuyun ve &lt;code&gt;aspire update --self&lt;/code&gt; ile Aspire 13.2&amp;rsquo;yi edinin.&lt;/p&gt;</content:encoded></item><item><title>azd update — Tüm Paket Yöneticileriniz İçin Tek Bir Komut</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azd-update-universal-upgrade-command/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azd-update-universal-upgrade-command/</guid><description>Azure Developer CLI artık, onu nasıl yüklediğinizden bağımsız olarak güncelleyen evrensel bir güncelleme komutuna sahip — winget, Homebrew, Chocolatey veya kurulum betiği.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/azd-update-universal-upgrade-command/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Her birkaç haftada bir beliren &amp;ldquo;azd&amp;rsquo;nin yeni bir sürümü mevcut&amp;rdquo; mesajını biliyor musunuz? &lt;code&gt;azd&lt;/code&gt;&amp;lsquo;yi winget, Homebrew veya altı ay önce çalıştırdığınız curl betiğiyle mi yüklediğinizi hatırlayamadığınız için görmezden geldiğiniz mesajı? Evet, bu sonunda düzeldi.&lt;/p&gt;
&lt;p&gt;Microsoft, &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;&lt;code&gt;azd update&lt;/code&gt;&lt;/a&gt;&amp;lsquo;i piyasaya sürdü — Azure Developer CLI&amp;rsquo;ı, başlangıçta nasıl yüklediğinizden bağımsız olarak en son sürüme güncelleyen tek bir komut. Windows, macOS, Linux — fark etmiyor. Tek komut.&lt;/p&gt;
&lt;h2 id="nasıl-çalışıyor"&gt;Nasıl çalışıyor&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hepsi bu. Yeni özelliklere erken erişim istiyorsanız, günlük insiders derlemesine geçebilirsiniz:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd update --channel daily
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd update --channel stable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Komut, mevcut kurulum yönteminizi algılar ve arka planda uygun güncelleme mekanizmasını kullanır. Artık &amp;ldquo;bu makinede winget mi yoksa choco mu kullandım?&amp;rdquo; sorusuna gerek yok.&lt;/p&gt;
&lt;h2 id="küçük-bir-uyarı"&gt;Küçük bir uyarı&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd update&lt;/code&gt;, 1.23.x sürümünden itibaren gönderilmeye başlandı. Daha eski bir sürümdeyseniz, orijinal kurulum yönteminizi kullanarak son bir manuel güncelleme yapmanız gerekecek. Bundan sonra &lt;code&gt;azd update&lt;/code&gt; her şeyi halleder.&lt;/p&gt;
&lt;p&gt;Mevcut sürümünüzü &lt;code&gt;azd version&lt;/code&gt; ile kontrol edin. Yeni bir kuruluma ihtiyacınız varsa, &lt;a href="https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd"&gt;kurulum dokümanları&lt;/a&gt; size yol gösterir.&lt;/p&gt;
&lt;h2 id="neden-önemli"&gt;Neden önemli&lt;/h2&gt;
&lt;p&gt;Bu küçük bir yaşam kalitesi iyileştirmesi, ancak Azure&amp;rsquo;a AI ajanları ve Aspire uygulamaları dağıtmak için &lt;code&gt;azd&lt;/code&gt;&amp;lsquo;yi günlük kullananlar için güncel kalmak daha az &amp;ldquo;bu hata zaten son sürümde düzeltilmişti&amp;rdquo; anı demek. Düşünmek zorunda kalmamanız gereken bir şey daha.&lt;/p&gt;
&lt;p&gt;Daha fazla bağlam için &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;tam duyuruyu&lt;/a&gt; ve Jon Gallant&amp;rsquo;ın &lt;a href="https://blog.jongallant.com/2026/04/azd-update"&gt;daha ayrıntılı incelemesini&lt;/a&gt; okuyun.&lt;/p&gt;</content:encoded></item><item><title>.NET Aspire 13.2 AI Ajanınızın En İyi Dostu Olmak İstiyor</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</guid><description>Aspire 13.2 ajansal geliştirmeye tam anlamıyla odaklanıyor — yapılandırılmış CLI çıktısı, izole çalıştırmalar, otomatik iyileştirme ortamları ve tam OpenTelemetry verisi sayesinde AI ajanlarınız uygulamalarınızı gerçekten derleyip çalıştırabilir ve izleyebilir.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;AI kodlama ajanınızın sağlam bir kod yazdığı, heyecanlandığınız ve ardından uygulamayı çalıştırmaya çalışırken her şeyin dağıldığı o anı biliyor musunuz? Port çakışmaları, hayalet süreçler, yanlış ortam değişkenleri — ve bir anda ajanınız özellik geliştirmek yerine başlangıç sorunlarını çözmek için token harcamaya başlıyor.&lt;/p&gt;
&lt;p&gt;Aspire ekibi tam da bu sorun hakkında &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;gerçekten düşünceli bir yazı&lt;/a&gt; yayımladı ve cevapları ikna edici: Aspire 13.2 yalnızca insanlar için değil, AI ajanları için de tasarlanmış.&lt;/p&gt;
&lt;h2 id="sorun-gerçek"&gt;Sorun gerçek&lt;/h2&gt;
&lt;p&gt;AI ajanları kod yazmakta inanılmaz derecede başarılı. Ancak çalışan bir full-stack uygulama göndermek, dosya oluşturmaktan çok daha fazlasını gerektiriyor. Servisleri doğru sırayla başlatmanız, portları yönetmeniz, ortam değişkenlerini ayarlamanız, veritabanlarını bağlamanız ve bir şeyler bozulduğunda geri bildirim almanız gerekiyor. Şu an çoğu ajan bunların hepsini deneme-yanılma yoluyla hallediypr — komutları çalıştırıyor, hata çıktısını okuyor, yeniden deniyor.&lt;/p&gt;
&lt;p&gt;Markdown talimatları, özel skill&amp;rsquo;ler ve prompt&amp;rsquo;lar ekleyerek onlara rehberlik etmeye çalışıyoruz, ancak bunlar öngörülemez, derlenemiyor ve ayrıştırılmaları bile token harcıyor. Aspire ekibi temel içgörüyü doğru yakaladı: ajanların daha fazla Markdown&amp;rsquo;a değil, &lt;strong&gt;derleyicilere ve yapılandırılmış API&amp;rsquo;lara&lt;/strong&gt; ihtiyacı var.&lt;/p&gt;
&lt;h2 id="ajan-altyapısı-olarak-aspire"&gt;Ajan altyapısı olarak Aspire&lt;/h2&gt;
&lt;p&gt;Aspire 13.2&amp;rsquo;nin ajansal geliştirme masasına getirdikleri:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tüm yığınınız yazılı kodda.&lt;/strong&gt; AppHost, tam topolojinizi — API, frontend, veritabanı, önbellek — derlenebilir TypeScript veya C# olarak tanımlıyor:&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="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&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;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;pg&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;addDatabase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;catalog&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="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cache&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;addRedis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;cache&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;api&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&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;addNodeApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;api&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./api&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;src/index.ts&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;withHttpEndpoint&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;PORT&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;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;postgres&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;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cache&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;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&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;waitFor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&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;Bir ajan, uygulama topolojisini anlamak, kaynak eklemek, bağlantıları oluşturmak ve &lt;em&gt;doğrulamak için derlemek&lt;/em&gt; amacıyla bunu okuyabilir. Derleyici bir şeyin yanlış olduğunu anında söylüyor. Tahmin yok, yapılandırma dosyalarıyla deneme-yanılma yok.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Her şeyi yöneten tek komut.&lt;/strong&gt; Ajanların &lt;code&gt;docker compose up&lt;/code&gt;, &lt;code&gt;npm run dev&lt;/code&gt; ve veritabanı başlangıç betikleri arasında denge kurması yerine tek yapmaları gereken şey &lt;code&gt;aspire start&lt;/code&gt;. Tüm kaynaklar doğru sırayla, doğru portlarda, doğru yapılandırmayla başlıyor. Uzun süre çalışan süreçler ajanı engellemez — bunları Aspire yönetiyor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paralel ajanlar için isolated mod.&lt;/strong&gt; &lt;code&gt;--isolated&lt;/code&gt; seçeneğiyle her Aspire çalıştırması kendi rastgele portlarını ve ayrı user secret&amp;rsquo;larını alıyor. Git worktree&amp;rsquo;lerinde çalışan birden fazla ajanınız mı var? Çakışmayacaklar. Bu, paralel ortamlar açan VS Code&amp;rsquo;un background agent&amp;rsquo;ları gibi araçlar için çok büyük bir gelişme.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Telemetri aracılığıyla ajan gözleri.&lt;/strong&gt; İşte burada gerçekten güçlü oluyor. Aspire CLI, geliştirme sırasında tam OpenTelemetry verilerini açığa çıkarıyor — trace&amp;rsquo;ler, metrikler, yapılandırılmış loglar. Ajanınız yalnızca konsol çıktısını okuyup en iyisini ummak zorunda değil. Başarısız bir isteği servisler arasında izleyebilir, yavaş endpoint&amp;rsquo;lerin profilini çıkarabilir ve neyin tam olarak nerede bozulduğunu saptayabilir. Bu, geliştirme döngüsünde üretim kalitesinde gözlemlenebilirlik demek.&lt;/p&gt;
&lt;h2 id="bowling-koruma-bandı-analojisi"&gt;Bowling koruma bandı analojisi&lt;/h2&gt;
&lt;p&gt;Aspire ekibi harika bir analoji kullanıyor: Aspire&amp;rsquo;ı AI ajanları için bowling koruma bantları olarak düşünün. Ajan mükemmel olmasa da (ve olmayacak), bantlar onu oluktan atmaktan koruyor. Yığın tanımı yanlış yapılandırmayı önlüyor, derleyici hataları yakalıyor, CLI süreç yönetimini üstleniyor ve telemetri geri bildirim döngüsünü sağlıyor.&lt;/p&gt;
&lt;p&gt;Bunu Playwright CLI gibi bir şeyle birleştirdiğinizde, ajanınız uygulamanızı gerçekten &lt;em&gt;kullanabilir&lt;/em&gt; — akışlara tıklayabilir, DOM&amp;rsquo;u kontrol edebilir, telemetride kırık şeyleri görebilir, kodu düzeltebilir, yeniden başlatabilir ve tekrar test edebilir. Derle, çalıştır, gözlemle, düzelt. Bu, peşinden koştuğumuz özerk geliştirme döngüsü.&lt;/p&gt;
&lt;h2 id="başlarken"&gt;Başlarken&lt;/h2&gt;
&lt;p&gt;Aspire&amp;rsquo;a yeni misiniz? CLI&amp;rsquo;ı &lt;a href="https://get.aspire.dev"&gt;get.aspire.dev&lt;/a&gt; adresinden yükleyin ve &lt;a href="https://aspire.dev/get-started/first-app"&gt;başlangıç rehberini&lt;/a&gt; takip edin.&lt;/p&gt;
&lt;p&gt;Zaten Aspire kullanıyor musunuz? 13.2&amp;rsquo;yi almak için &lt;code&gt;aspire update --self&lt;/code&gt; komutunu çalıştırın, ardından favori kodlama ajanınızı repoya yönlendirin. Aspire&amp;rsquo;ın koruma bantlarıyla ne kadar daha ileri gittiğini görünce şaşırabilirsiniz.&lt;/p&gt;
&lt;h2 id="özet"&gt;Özet&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 artık sadece bir dağıtık uygulama framework&amp;rsquo;ü değil — temel ajan altyapısına dönüşüyor. Yapılandırılmış yığın tanımları, tek komutla başlangıç, izole paralel çalıştırmalar ve gerçek zamanlı telemetri, AI ajanlarına kod yazmaktan uygulama göndermek için tam olarak ihtiyaç duydukları şeyleri veriyor.&lt;/p&gt;
&lt;p&gt;Tüm ayrıntılar ve demo videolar için Aspire ekibinin &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;tam yazısını&lt;/a&gt; okuyun.&lt;/p&gt;</content:encoded></item><item><title>Aspire'ın Isolated Modu Paralel Geliştirmedeki Port Çakışma Kabusu'nu Çözüyor</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/</guid><description>Aspire 13.2, --isolated modunu tanıtıyor: rastgele port ataması, ayrı secret'lar ve aynı AppHost'un birden fazla örneğini çalıştırırken sıfır çakışma. AI ajanları, worktree'ler ve paralel iş akışları için mükemmel.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Aynı projenin iki örneğini aynı anda çalıştırmayı hiç denediniz mi? O acıyı bilirsiniz. Port 8080 zaten kullanımda. Port 17370 alınmış. Bir şeyleri kapatın, yeniden başlatın, ortam değişkenlerini dengeleyin — bu, üretkenliği mahveden bir durum.&lt;/p&gt;
&lt;p&gt;Bu sorun daha da kötüleşiyor, iyileşmiyor. AI ajanlar bağımsız çalışmak için git worktree&amp;rsquo;ler oluşturuyor. Background agent&amp;rsquo;lar ayrı ortamlar başlatıyor. Geliştiriciler özellik dalları için aynı repoyu iki kez checkout yapıyor. Bu senaryoların her biri aynı engelle karşılaşıyor: aynı uygulamanın iki örneği aynı portlar için çarpışıyor.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 bunu tek bir bayrakla çözüyor. Aspire ekibinden James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;tüm ayrıntıları yazdı&lt;/a&gt; ve bu, &amp;ldquo;bunu neden daha önce yoktu?&amp;rdquo; diye düşündüren özelliklerden biri.&lt;/p&gt;
&lt;h2 id="çözüm---isolated"&gt;Çözüm: &lt;code&gt;--isolated&lt;/code&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire run --isolated
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hepsi bu. Her çalıştırma şunları alıyor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rastgele portlar&lt;/strong&gt; — örnekler arasında artık çakışma yok&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;İzole user secret&amp;rsquo;lar&lt;/strong&gt; — bağlantı dizeleri ve API anahtarları örnek başına ayrı kalıyor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Manuel port yeniden ataması yok. Ortam değişkeni dengeleme yok. Her çalıştırma otomatik olarak taze, çakışmasız bir ortam alıyor.&lt;/p&gt;
&lt;h2 id="bunun-parladığı-gerçek-senaryolar"&gt;Bunun parladığı gerçek senaryolar&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Çoklu checkout&amp;rsquo;lar.&lt;/strong&gt; Bir dizinde özellik dalı, başka bir dizinde hata düzeltmesi var:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Terminal 1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/projects/my-app-feature
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire run --isolated
&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="c1"&gt;# Terminal 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/projects/my-app-bugfix
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire run --isolated
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Her ikisi de çakışma olmadan çalışıyor. Dashboard neyin nerede çalıştığını gösteriyor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VS Code&amp;rsquo;daki background agent&amp;rsquo;lar.&lt;/strong&gt; Copilot Chat&amp;rsquo;in background agent&amp;rsquo;ı kodunuz üzerinde bağımsız çalışmak için bir git worktree oluşturduğunda, Aspire AppHost&amp;rsquo;unuzu çalıştırması gerekebilir. &lt;code&gt;--isolated&lt;/code&gt; olmadan, bu birincil worktree&amp;rsquo;nizle port çakışmasına yol açar. Bununla birlikte her iki örnek de çalışır.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;aspire agent init&lt;/code&gt; ile birlikte gelen Aspire skill&amp;rsquo;i, worktree&amp;rsquo;lerde çalışırken ajanlara otomatik olarak &lt;code&gt;--isolated&lt;/code&gt; kullanmalarını talimatlandırıyor. Dolayısıyla Copilot&amp;rsquo;un background agent&amp;rsquo;ı bunu kutudan çıkar çıkmaz halledebilmeli.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Geliştirmeyle eş zamanlı entegrasyon testleri.&lt;/strong&gt; Özellik geliştirmeye devam ederken canlı bir AppHost&amp;rsquo;a karşı test çalıştırmanız mı gerekiyor? Isolated mod, her bağlama kendi portlarını ve yapılandırmasını veriyor.&lt;/p&gt;
&lt;h2 id="arka-planda-nasıl-çalışıyor"&gt;Arka planda nasıl çalışıyor&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;--isolated&lt;/code&gt; geçirdiğinizde, CLI çalıştırma için benzersiz bir örnek kimliği oluşturuyor. Bu iki davranışı yönlendiriyor:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Port rastgeleleştirmesi&lt;/strong&gt; — AppHost yapılandırmanızda tanımlanan öngörülebilir portlara bağlanmak yerine, isolated mod her şey için — dashboard, servis endpoint&amp;rsquo;leri, hepsi — rastgele uygun portlar seçiyor. Servis keşfi otomatik olarak ayarlanıyor, bu nedenle servisler hangi portlara düşerlerse düşsünler birbirlerini buluyor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Secret izolasyonu&lt;/strong&gt; — Her izole çalıştırma, örnek kimliğiyle anahtarlanan kendi user secret deposunu alıyor. Bir çalıştırmadan bağlantı dizeleri ve API anahtarları diğerine sızmıyor.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Kodunuzun değiştirilmesi gerekmiyor. Aspire&amp;rsquo;ın servis keşfi, endpoint&amp;rsquo;leri çalışma zamanında çözümlüyor, bu nedenle port atamasından bağımsız olarak her şey doğru şekilde bağlanıyor.&lt;/p&gt;
&lt;h2 id="ne-zaman-kullanmalı"&gt;Ne zaman kullanmalı&lt;/h2&gt;
&lt;p&gt;Aynı AppHost&amp;rsquo;un birden fazla örneğini aynı anda çalıştırırken &lt;code&gt;--isolated&lt;/code&gt; kullanın — ister paralel geliştirme, ister otomatik testler, ister AI ajanları, ister git worktree&amp;rsquo;ler olsun. Tahmin edilebilir portları tercih ettiğiniz tek örnekli geliştirme için, normal &lt;code&gt;aspire run&lt;/code&gt; hâlâ gayet iyi çalışıyor.&lt;/p&gt;
&lt;h2 id="özet"&gt;Özet&lt;/h2&gt;
&lt;p&gt;Isolated mod, gerçek ve giderek yaygınlaşan bir sorunu çözen küçük bir özellik. AI destekli geliştirme bizi daha fazla paralel iş akışına — birden fazla ajan, birden fazla worktree, birden fazla bağlam — doğru iterken, portlar için çakışmadan yeni bir örnek başlatabilme yeteneği vazgeçilmez hale geliyor.&lt;/p&gt;
&lt;p&gt;Tüm teknik ayrıntılar için &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;tam yazıyı&lt;/a&gt; okuyun ve 13.2&amp;rsquo;yi almak için &lt;code&gt;aspire update --self&lt;/code&gt; ile deneyin.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2 Bir Dokümantasyon CLI'ı Sunuyor — ve AI Ajanınız da Kullanabilir</title><link>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</link><pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</guid><description>.NET Aspire 13.2, aspire docs'u ekliyor — terminali terk etmeden resmi belgeleri aramanızı, gezmenizi ve okumanızı sağlayan bir CLI. AI ajanları için de araç olarak çalışıyor. Bunun neden önemli olduğunu burada açıklıyoruz.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bu yazı otomatik olarak çevrilmiştir. Orijinal için &lt;a href="https://thedotnetblog.com/tr/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/"&gt;buraya tıklayın&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bir Aspire AppHost&amp;rsquo;un içinde derinlere dalıp entegrasyonları bağlarken Redis entegrasyonunun tam olarak hangi parametreleri beklediğini kontrol etmeniz gereken o anı biliyor musunuz? Tarayıcınıza geçersiniz, aspire.dev&amp;rsquo;de arama yaparsınız, API dokümanlarını incelersiniz, sonra editörünüze dönersiniz. Bağlam kaybolmuş. Akış bozulmuş.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 tam da &lt;a href="https://devblogs.microsoft.com/aspire/aspire-docs-in-your-terminal/"&gt;bunun için bir çözüm sundu&lt;/a&gt;. &lt;code&gt;aspire docs&lt;/code&gt; CLI&amp;rsquo;ı, terminali terk etmeden resmi Aspire belgelerini doğrudan arayıp okuyabilmenizi sağlıyor. Yeniden kullanılabilir servisler tarafından desteklendiği için, AI ajanları ve skill&amp;rsquo;ler de var olmayan API&amp;rsquo;ları uydurmak yerine belge aramak amacıyla aynı komutları kullanabiliyor.&lt;/p&gt;
&lt;h2 id="bu-aslında-ne-sorunu-çözüyor"&gt;Bu aslında ne sorunu çözüyor&lt;/h2&gt;
&lt;p&gt;David Pine orijinal yazısında konuyu net olarak özetliyor: AI ajanlar, geliştiricilere Aspire uygulamaları geliştirmede yardım etmekte &lt;em&gt;berbattı&lt;/em&gt;. &lt;code&gt;aspire run&lt;/code&gt; yerine &lt;code&gt;dotnet run&lt;/code&gt; öneriyorlar, aspire.dev&amp;rsquo;deki belgeleri learn.microsoft.com&amp;rsquo;a yönlendiriyorlardı, güncel olmayan NuGet paketleri öneriyorlardı ve — kişisel favorim — var olmayan API&amp;rsquo;ları uyduruyorlardı.&lt;/p&gt;
&lt;p&gt;Neden? Çünkü Aspire, çok dilli olmadan çok daha uzun süre .NET&amp;rsquo;e özel kaldı ve LLM&amp;rsquo;ler en son özelliklerin öncesindeki eğitim verileriyle çalışıyor. Bir AI ajanına mevcut belgeleri gerçekten arama yeteneği verdiğinizde, tahmin etmeyi bırakıp işe yarar hale geliyor.&lt;/p&gt;
&lt;h2 id="üç-komut-sıfır-tarayıcı-sekmesi"&gt;Üç komut, sıfır tarayıcı sekmesi&lt;/h2&gt;
&lt;p&gt;CLI ferahlatıcı derecede basit:&lt;/p&gt;
&lt;h3 id="tüm-belgeleri-listele"&gt;Tüm belgeleri listele&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;aspire.dev&amp;rsquo;de mevcut her belge sayfasını döndürür. Makine tarafından okunabilir çıktı mı istiyorsunuz? &lt;code&gt;--format Json&lt;/code&gt; ekleyin.&lt;/p&gt;
&lt;h3 id="bir-konu-arayın"&gt;Bir konu arayın&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs search &lt;span class="s2"&gt;&amp;#34;redis&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ağırlıklı ilgi puanlamasıyla hem başlıkları hem içeriği arar. Dahili olarak dokümantasyon araçlarını destekleyen arama motorunun aynısı. Başlıklar, slug&amp;rsquo;lar ve ilgi puanlarıyla sıralı sonuçlar alırsınız.&lt;/p&gt;
&lt;h3 id="tam-sayfayı-okuyun-ya-da-yalnızca-bir-bölümü"&gt;Tam sayfayı okuyun (ya da yalnızca bir bölümü)&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tam sayfayı markdown olarak terminalinize akıtır. Yalnızca bir bölüme mi ihtiyacınız var?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration --section &lt;span class="s2"&gt;&amp;#34;Add Redis resource&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cerrahi hassasiyet. 500 satır kaydırma yok. Sadece ihtiyacınız olan kısım.&lt;/p&gt;
&lt;h2 id="ai-ajan-boyutu"&gt;AI ajan boyutu&lt;/h2&gt;
&lt;p&gt;İşte AI araçlarıyla geliştirme yapan bizim için ilginç olan kısım. Aynı &lt;code&gt;aspire docs&lt;/code&gt; komutları, AI ajanları için araç olarak çalışıyor — skill&amp;rsquo;ler, MCP sunucuları veya basit CLI sarmalayıcıları aracılığıyla.&lt;/p&gt;
&lt;p&gt;AI asistanınızın eski eğitim verilerine dayalı Aspire API&amp;rsquo;ları uydurmak yerine, &lt;code&gt;aspire docs search &amp;quot;postgres&amp;quot;&lt;/code&gt; çağırabilir, resmi entegrasyon belgelerini bulabilir, doğru sayfayı okuyabilir ve size belgelenmiş yaklaşımı sunabilir. Gerçek zamanlı, güncel belgeler — modelin altı ay önce ezberledikleri değil.&lt;/p&gt;
&lt;p&gt;Bunun arkasındaki mimari kasıtlı. Aspire ekibi tek seferlik bir entegrasyon yerine yeniden kullanılabilir servisler (&lt;code&gt;IDocsIndexService&lt;/code&gt;, &lt;code&gt;IDocsSearchService&lt;/code&gt;, &lt;code&gt;IDocsFetcher&lt;/code&gt;, &lt;code&gt;IDocsCache&lt;/code&gt;) inşa etti. Bu, aynı arama motorunun terminaldeki insanlar, editörünüzdeki AI ajanları ve CI pipeline&amp;rsquo;ınızdaki otomasyonlar için çalışması anlamına geliyor.&lt;/p&gt;
&lt;h2 id="gerçek-dünya-senaryoları"&gt;Gerçek dünya senaryoları&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Hızlı terminal aramaları:&lt;/strong&gt; Üç dosya derindesiniz ve Redis yapılandırma parametrelerine ihtiyacınız var. İki komut, doksan saniye, işe geri dönüş:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs search &lt;span class="s2"&gt;&amp;#34;redis&amp;#34;&lt;/span&gt; --limit &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration --section &lt;span class="s2"&gt;&amp;#34;Configuration&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;AI destekli geliştirme:&lt;/strong&gt; VS Code skill&amp;rsquo;iniz CLI komutlarını sarmalıyor. &amp;ldquo;AppHost&amp;rsquo;uma bir PostgreSQL veritabanı ekle&amp;rdquo; diyorsunuz ve ajan cevap vermeden önce gerçek belgelere bakıyor. Halüsinasyon yok.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CI/CD doğrulama:&lt;/strong&gt; Pipeline&amp;rsquo;ınız, AppHost yapılandırmalarını programatik olarak resmi belgelerle doğruluyor. &lt;code&gt;--format Json&lt;/code&gt; çıktısı &lt;code&gt;jq&lt;/code&gt; ve diğer araçlara temiz şekilde aktarılıyor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Özel bilgi tabanları:&lt;/strong&gt; Kendi AI araçlarınızı mı geliştiriyorsunuz? Yapılandırılmış JSON çıktısını doğrudan bilgi tabanınıza aktarın:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs search &lt;span class="s2"&gt;&amp;#34;monitoring&amp;#34;&lt;/span&gt; --format Json &lt;span class="p"&gt;|&lt;/span&gt; jq &lt;span class="s1"&gt;&amp;#39;[.[] | {slug, title, summary}]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Web scraping yok. API anahtarı yok. Dokümantasyon araçlarının dahili olarak kullandığı aynı yapılandırılmış veri.&lt;/p&gt;
&lt;h2 id="belgeler-her-zaman-canlı"&gt;Belgeler her zaman canlı&lt;/h2&gt;
&lt;p&gt;En çok takdir ettiğim kısım bu. CLI bir anlık görüntü indirmiyor — aspire.dev&amp;rsquo;i ETag tabanlı önbelleklemeyle sorguluyor. Belgeler güncellenir güncellenmez, CLI&amp;rsquo;ınız ve üzerine inşa edilmiş tüm skill&amp;rsquo;ler bunu yansıtıyor. Eski kopyalar yok, &amp;ldquo;ama wiki şöyle diyordu&amp;hellip;&amp;rdquo; anları yok.&lt;/p&gt;
&lt;h2 id="özet"&gt;Özet&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;aspire docs&lt;/code&gt;, gerçek bir sorunu temiz biçimde çözen küçük özelliklerden biri. İnsanlar terminale özgü belge erişimi kazanıyor. AI ajanları tahmin etmeyi bırakıp gerçek belgelere başvurmanın bir yolunu buluyor. Ve hepsi aynı gerçek kaynakla destekleniyor.&lt;/p&gt;
&lt;p&gt;.NET Aspire ile geliştirme yapıyorsanız ve CLI&amp;rsquo;ı henüz denemediyseniz, &lt;code&gt;aspire docs search &amp;quot;konunuz&amp;quot;&lt;/code&gt; çalıştırın ve nasıl hissettirdiğini görün. Sonra bu komutları kullandığınız AI skill veya otomasyon kurulumuna entegre etmeyi düşünün — ajanlarınız size teşekkür edecek.&lt;/p&gt;
&lt;p&gt;Dokümantasyon araçlarının nasıl oluşturulduğuna dair &lt;a href="https://davidpine.dev/posts/aspire-docs-mcp-tools/"&gt;David Pine&amp;rsquo;ın derinlemesine incelemesine&lt;/a&gt; ve tüm ayrıntılar için &lt;a href="https://aspire.dev/reference/cli/commands/aspire-docs/"&gt;resmi CLI referansına&lt;/a&gt; göz atın.&lt;/p&gt;</content:encoded></item></channel></rss>