<?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>Aspire | The .NET Blog</title><link>https://thedotnetblog.com/de/tags/aspire/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>de</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Tue, 19 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/de/tags/aspire/index.xml" rel="self" type="application/rss+xml"/><item><title>Private Endpoints, VNets, NSGs — Aspire übernimmt jetzt das Netzwerk</title><link>https://thedotnetblog.com/de/news/emiliano-montesdeoca/aspire-azure-enterprise-networking-private-endpoints/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/de/news/emiliano-montesdeoca/aspire-azure-enterprise-networking-private-endpoints/</guid><description>Der neue Azure-Unternehmensnetzwerk-Support für Aspire ermöglicht es, VNets, private Endpoints, NAT-Gateways, NSGs und Netzwerksicherheitsperimeter direkt im AppHost zu modellieren — ohne Infrastrukturdrift.</description><content:encoded>&lt;p&gt;Ich habe dieses Szenario zu oft gesehen. Die App ist fertig. Die Demo ist großartig. Dann erscheint die Sicherheits-Checkliste: Speicher aus dem öffentlichen Internet nehmen, innerhalb eines VNets ausführen, ausgehende IPs für die Allowlist des Partners bereitstellen, nachweisen, dass nur die richtigen Subnetze mit den richtigen Diensten kommunizieren.&lt;/p&gt;
&lt;p&gt;An diesem Punkt beginnen das Anwendungsmodell und das Infrastrukturmodell auseinanderzudriften, auf eine Art, die schmerzhaft zu pflegen ist.&lt;/p&gt;
&lt;p&gt;Der neue Azure-Unternehmensnetzwerk-Support für Aspire adressiert dies direkt. Sie beschreiben die Netzwerkstruktur neben den Ressourcen, die sie verwenden, in Ihrem AppHost.&lt;/p&gt;
&lt;h2 id="die-bausteine"&gt;Die Bausteine&lt;/h2&gt;
&lt;p&gt;Hier ist, wofür jedes Azure-Netzwerkkonzept verwendet wird, destilliert:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Funktion&lt;/th&gt;
&lt;th&gt;Verwenden Sie es wenn&lt;/th&gt;
&lt;th&gt;Warum es wichtig ist&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Virtuelles Netzwerk&lt;/td&gt;
&lt;td&gt;Sie einen privaten Adressraum benötigen&lt;/td&gt;
&lt;td&gt;Die Netzwerkgrenze für Subnetze, private Endpoints und Routing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subnetz&lt;/td&gt;
&lt;td&gt;Sie Workloads innerhalb des VNets trennen müssen&lt;/td&gt;
&lt;td&gt;Jeder Teil des Systems erhält seinen eigenen Adressbereich und seine eigene Richtlinienoberfläche&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delegiertes Subnetz&lt;/td&gt;
&lt;td&gt;Ein Plattformdienst (wie ACA) ein Subnetz verwalten muss&lt;/td&gt;
&lt;td&gt;Ermöglicht dem Dienst, verwaltete Infrastruktur sicher in Ihrem VNet zu platzieren&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NAT-Gateway&lt;/td&gt;
&lt;td&gt;Sie vorhersagbare ausgehende öffentliche IPs benötigen&lt;/td&gt;
&lt;td&gt;Stabile Adresse für Allowlists und Auditing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Privater Endpoint&lt;/td&gt;
&lt;td&gt;Sie eine PaaS-Ressource privat erreichbar haben möchten&lt;/td&gt;
&lt;td&gt;Platziert eine private IP für diesen Dienst in Ihrem VNet, entfernt öffentliche Exposition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NSG&lt;/td&gt;
&lt;td&gt;Sie Regeln für Datenverkehr auf Subnetz-Ebene benötigen&lt;/td&gt;
&lt;td&gt;Explizites Erlauben/Ablehnen für eingehenden und ausgehenden Datenverkehr pro Subnetz&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="beschreibung-im-apphost"&gt;Beschreibung im AppHost&lt;/h2&gt;
&lt;p&gt;Die wichtigste Änderung hier ist, dass Sie das Netzwerk &lt;em&gt;zusammen&lt;/em&gt; mit den Ressourcen modellieren, die es verwenden, nicht in einer separaten Bicep-Datei, die mit der Zeit vom Anwendungsmodell abweicht.&lt;/p&gt;
&lt;p&gt;Vom AppHost aus können Sie:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VNets und Subnetze mit &lt;code&gt;AddVirtualNetwork()&lt;/code&gt; und &lt;code&gt;AddSubnet()&lt;/code&gt; erstellen&lt;/li&gt;
&lt;li&gt;Ein NAT-Gateway an Subnetze für stabile ausgehende IPs anhängen&lt;/li&gt;
&lt;li&gt;Private Endpoints für Speicher, Key Vault, SQL und andere PaaS-Dienste erstellen&lt;/li&gt;
&lt;li&gt;NSGs mit eingehenden und ausgehenden Sicherheitsregeln definieren&lt;/li&gt;
&lt;li&gt;Netzwerksicherheitsperimeter für ressourcenübergreifende Richtlinien konfigurieren&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das Ergebnis ist, dass wenn Sie &lt;code&gt;azd up&lt;/code&gt; ausführen, die Infrastruktur mit dem übereinstimmt, was das Anwendungsmodell sagt, dass es benötigt. Nicht das, was eine manuell gepflegte Vorlage sagt.&lt;/p&gt;
&lt;h2 id="warum-das-für-echte-anwendungen-wichtig-ist"&gt;Warum das für echte Anwendungen wichtig ist&lt;/h2&gt;
&lt;p&gt;Einige Dinge, die erheblich einfacher werden, sobald das Netzwerk in Aspire modelliert ist:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Private Endpoints für Key Vault und Speicher&lt;/strong&gt; — Sie beschreiben &lt;code&gt;WithPrivateEndpoint()&lt;/code&gt; auf diesen Ressourcen, und Aspire übernimmt die DNS-Zonenkonfiguration und das Endpoint-Anhängen. Die App ändert sich nie.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Konsistente ausgehende IPs&lt;/strong&gt; — fügen Sie ein NAT-Gateway zum entsprechenden Subnetz hinzu, und jede ausgehende Anfrage Ihrer App geht durch eine bekannte, stabile IP. Partner können sie allowlisten. Auditoren können sie nachverfolgen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NSG-Regeln aus Code&lt;/strong&gt; — anstatt durch das Portal zu klicken oder ein Bicep-Snippet zu pflegen, leben Ihre Sicherheitsregeln im AppHost neben den Ressourcen, die sie schützen.&lt;/p&gt;
&lt;p&gt;Dies ist die Art von Integration, die Demos nicht aufregend macht, aber Produktionssysteme wartbar macht.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Netzwerksicherheit, die spät im Projektlebenszyklus auftaucht, ist ein gelöstes Problem, wenn Sie sie von Anfang an zusammen mit der App modellieren. Der Unternehmensnetzwerk-Support von Aspire macht das möglich, ohne eine separate Infrastruktur-Spur zu benötigen.&lt;/p&gt;
&lt;p&gt;Vollständige Details im ursprünglichen Beitrag: &lt;a href="https://devblogs.microsoft.com/aspire/aspire-azure-enterprise-networking/"&gt;Securing Azure apps with Aspire enterprise networking&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.3: Kubernetes-Unterstützung, Browser-Logs und die Aspireify-Funktion</title><link>https://thedotnetblog.com/de/news/emiliano-montesdeoca/aspire-133-kubernetes-browser-logs-aspireify/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/de/news/emiliano-montesdeoca/aspire-133-kubernetes-browser-logs-aspireify/</guid><description>Fünf Wochen nach 13.2 erscheint Aspire 13.3 mit 45 neuen Features, darunter erstklassiges AKS-Deployment, eine KI-gestützte Onboarding-Funktion, Browser-Log-Erfassung und strukturierte Befehlsergebnisse.</description><content:encoded>&lt;p&gt;Fünf Wochen sind keine lange Zeit für ein Release, aber Aspire 13.3 fühlt sich nicht so an. Die Hauptpunkte sind bedeutsam: erstklassiges Kubernetes- und AKS-Deployment mit Helm, eine agentengestützte Onboarding-Funktion namens Aspireify, Browser-Log-Erfassung direkt im Dashboard und strukturierte Befehlsergebnisse. Dazu 45 neue Features, 134 Verbesserungen und 93 Fehlerbehebungen.&lt;/p&gt;
&lt;p&gt;Kommen wir zu den Highlights.&lt;/p&gt;
&lt;h2 id="aspireify-agentengestütztes-onboarding"&gt;Aspireify: Agentengestütztes Onboarding&lt;/h2&gt;
&lt;p&gt;Aspire zu einem bestehenden Projekt hinzuzufügen klingt einfach — AppHost einfügen, fertig. In der Praxis erfordert es viel Recherche: welche Ports wichtig sind, welche Umgebungsvariablen echte Abhängigkeiten sind, welche Docker-Compose-Dienste zu Aspire-Integrationen zugeordnet werden sollen.&lt;/p&gt;
&lt;p&gt;Die neue &lt;strong&gt;Aspireify-Funktion&lt;/strong&gt; gibt Ihrem Coding-Agenten einen geführten Workflow genau dafür. Wenn &lt;code&gt;aspire init&lt;/code&gt; einen Skelett-AppHost erstellt, hilft die Aspireify-Funktion dem Agenten, das Repository zu inspizieren, zu verstehen, wie es bereits funktioniert, und den AppHost so zu verdrahten, dass er zur App passt — nicht umgekehrt.&lt;/p&gt;
&lt;p&gt;Die Standardhaltung ist &amp;ldquo;Änderungen an Ihrem Code minimieren.&amp;rdquo; Wenn Ihre App bereits &lt;code&gt;DATABASE_URL&lt;/code&gt; liest, mappt der Agent das mit &lt;code&gt;WithEnvironment()&lt;/code&gt; anstatt Sie zu bitten, Ihre Konfiguration neu zu schreiben. Wenn ein Port fest codiert ist, teilt die Funktion dem Agenten mit, wann er ihn beibehalten soll.&lt;/p&gt;
&lt;p&gt;Das ist die Art von KI-Tooling, die wirklich Zeit spart, anstatt mehr Arbeit zum Überprüfen zu generieren.&lt;/p&gt;
&lt;h2 id="erstklassiges-kubernetes--und-aks-deployment"&gt;Erstklassiges Kubernetes- und AKS-Deployment&lt;/h2&gt;
&lt;p&gt;Dies stand schon eine Weile auf der Wunschliste. Aspire 13.3 liefert &lt;strong&gt;erstklassige Kubernetes- und AKS-Deployment-Unterstützung mit Helm&lt;/strong&gt;. Sie können jetzt AKS direkt aus den Aspire-Tools als Deployment-Ziel wählen.&lt;/p&gt;
&lt;p&gt;Für Teams, die bereits Produktionsworkloads auf AKS betreiben, schließt dies eine bedeutende Lücke. Ihr Aspire-App-Modell hat jetzt einen sauberen Weg von der lokalen Entwicklung zu Kubernetes ohne manuelle Helm-Chart-Erstellung.&lt;/p&gt;
&lt;h2 id="browser-logs-im-dashboard"&gt;Browser-Logs im Dashboard&lt;/h2&gt;
&lt;p&gt;Das ist eine jener Funktionen, die klein erscheinen, bis man ein Frontend-Problem debuggt.&lt;/p&gt;
&lt;p&gt;Die neue &lt;code&gt;WithBrowserLogs()&lt;/code&gt; API hängt eine verfolgte Browser-Ressource an jede endpoint-fähige Ressource an. Aspire startet Chromium mit einer privaten CDP-Pipe und streamt Konsolen-Logs, Netzwerkanfragen und Fehler direkt in den Ressourcen-Log-Stream:&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;frontend&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddViteApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&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="n"&gt;WithHttpEndpoint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3000&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="n"&gt;WithBrowserLogs&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;Der TypeScript AppHost unterstützt dasselbe:&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;frontend&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;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;withHttpEndpoint&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt;: &lt;span class="kt"&gt;3000&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;withBrowserLogs&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;Konsolen-Fehler, fehlgeschlagene Netzwerkanfragen, clientseitige Ausnahmen — alles im selben Dashboard sichtbar, wo Sie bereits Traces und Metriken beobachten. Kein Tab-Wechsel zu Browser DevTools mehr für die Grundlagen.&lt;/p&gt;
&lt;h2 id="strukturierte-befehlsergebnisse"&gt;Strukturierte Befehlsergebnisse&lt;/h2&gt;
&lt;p&gt;Ressourcenbefehle haben ein bedeutsames Upgrade erhalten. Bisher gaben Befehle Erfolg/Misserfolg zurück. Jetzt geben sie strukturierte Ergebnisse zurück: Text, JSON oder Markdown, das durch das Modell, die Dashboard-Benutzeroberfläche, die CLI und die MCP-Tools fließt.&lt;/p&gt;
&lt;p&gt;Das Dashboard verbindet all das mit einem neuen Benachrichtigungscenter im Header. Befehlsergebnisse erscheinen als zeitgestempelte Benachrichtigungen mit Markdown-Rendering und einer &amp;ldquo;Antwort anzeigen&amp;rdquo;-Aktion.&lt;/p&gt;
&lt;p&gt;Das macht Ressourcenbefehle wirklich komposierbar. Eine Integration kann jetzt einen Befehl exponieren, der eine bedeutsame Ausgabe zurückgibt — wie eine Tunnel-URL — anstatt nur irgendwo den Zustand zu ändern.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Aspire 13.3 ist das Upgrade wert, allein schon für die Kubernetes-Unterstützung. Die Browser-Logs und strukturierten Befehlsergebnisse fühlen sich wie die Art von Verbesserungen der Lebensqualität an, die sich in einem alltäglichen Entwicklungsworkflow schnell ansammeln.&lt;/p&gt;
&lt;p&gt;Vollständige Versionshinweise: &lt;a href="https://devblogs.microsoft.com/aspire/whats-new-aspire-13-3/"&gt;What&amp;rsquo;s New in Aspire 13.3&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2: Bun-Support, bessere Container und weniger Debug-Reibung</title><link>https://thedotnetblog.com/de/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/de/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</guid><description>Aspire 13.2 fügt erstklassige Bun-Unterstützung für Vite-Apps hinzu, behebt Yarn-Zuverlässigkeit und liefert Container-Verbesserungen, die das lokale Dev-Verhalten vorhersehbarer machen.</description><content:encoded>&lt;p&gt;&lt;em&gt;Dieser Beitrag wurde automatisch übersetzt. Zur Originalversion &lt;a href="https://thedotnetblog.com/posts/emiliano-montesdeoca/aspire-132-bun-container-enhancements/"&gt;hier klicken&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Wenn du .NET-Backends mit JavaScript-Frontends in Aspire baust, ist 13.2 das Update, das deinen Alltag leise besser macht. Keine neuen Paradigmen. Nur solide Verbesserungen an Dingen, die leicht nervig waren.&lt;/p&gt;
&lt;h2 id="bun-ist-jetzt-erstklassig"&gt;Bun ist jetzt erstklassig&lt;/h2&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="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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wenn dein Team Bun bereits verwendet, zwingt Aspire dich nicht mehr gegen den Strom zu schwimmen.&lt;/p&gt;
&lt;h2 id="yarn-wurde-zuverlässiger"&gt;Yarn wurde zuverlässiger&lt;/h2&gt;
&lt;p&gt;Yarn-Nutzer bekommen etwas mindestens genauso Wichtiges: weniger mysteriöse Fehler bei &lt;code&gt;withYarn()&lt;/code&gt; mit &lt;code&gt;addViteApp()&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="container-verbesserungen"&gt;Container-Verbesserungen&lt;/h2&gt;
&lt;h3 id="explizite-pull-policy"&gt;Explizite Pull Policy&lt;/h3&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;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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Perfekt für Workflows, wo du lokal Images baust und Compose genau dieses verwenden soll.&lt;/p&gt;
&lt;h3 id="postgresql-18-funktioniert-korrekt"&gt;PostgreSQL 18+ funktioniert korrekt&lt;/h3&gt;
&lt;p&gt;PostgreSQL 18 änderte sein internes Verzeichnislayout, was das Volume-Mapping still brach. 13.2 behebt das.&lt;/p&gt;
&lt;h2 id="debugging-verbesserungen"&gt;Debugging-Verbesserungen&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DebuggerDisplayAttribute&lt;/code&gt; auf Core-Typen — nützliche Werte statt tiefer Objektbäume&lt;/li&gt;
&lt;li&gt;Bessere Fehlermeldungen für &lt;code&gt;WaitFor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BeforeResourceStartedEvent&lt;/code&gt; feuert zum richtigen Zeitpunkt&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="fazit"&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 ist ein fokussiertes Qualitäts-Release. Originalpost von David Pine: &lt;a href="https://devblogs.microsoft.com/aspire/aspire-bun-support-and-container-enhancements/"&gt;Aspire 13.2: Bun Support and Container Enhancements&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Global Azure Spain 2026</title><link>https://thedotnetblog.com/de/events/global-azure-spain-2026/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><guid>https://thedotnetblog.com/de/events/global-azure-spain-2026/</guid><description>Das größte Azure-Community-Event in Spanien — ein ganzer Tag mit Sessions zu Azure, KI, Daten, Sicherheit und Cloud-nativer Entwicklung mit 38 Speakern auf 3 Tracks.</description><content:encoded>&lt;p&gt;Global Azure Spain 2026 findet am &lt;strong&gt;18. April 2026&lt;/strong&gt; im &lt;strong&gt;Kinépolis Diversia&lt;/strong&gt; in Alcobendas, Madrid statt. Es ist das größte Community-Azure-Event in Spanien, mit 38 Speakern auf 3 parallelen Tracks zu KI-Agenten, Azure-Netzwerken, Cosmos DB, Fabric, IoT, Sicherheit und vielem mehr.&lt;/p&gt;
&lt;p&gt;Das Event läuft von &lt;strong&gt;08:30 bis 18:30&lt;/strong&gt; und beinhaltet Keynote, Kaffeepausen, Mittagessen und eine Abschluss-Q&amp;amp;A-Session.&lt;/p&gt;
&lt;h2 id="highlights-der-agenda"&gt;Highlights der Agenda&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Domando Agentes de IA&lt;/strong&gt;: Governance, Tools und APIs mit Azure AI Foundry und Azure API Management&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Construyendo agentes con LibreChat en Azure&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How Can I Steal Your Data with Azure Private Endpoints&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stop Building APIs. Forge Agents with Azure&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agentic DevOps Meets IoT: Real-Time Systems with Fabric and GitHub Copilot&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El regreso de los tamagotchis!&lt;/strong&gt;: Multi-Agenten-Systeme in Aktion&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Foundry Control Plane como plataforma de Agentes global&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rompiendo el perímetro: Zero Trust aplicado en Azure&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tickets"&gt;Tickets&lt;/h2&gt;
&lt;p&gt;Die Anmeldung erfolgt als symbolische Spende — der gesamte Ticketpreis geht direkt an &lt;strong&gt;Plan International&lt;/strong&gt; für Kinderrechte und Gleichstellung weltweit. Begrenzte Kapazität, also sicher dir rechtzeitig einen Platz.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.eventbrite.es/e/entradas-global-azure-spain-2026-en-madrid-1981594189564"&gt;Tickets auf Eventbrite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://globalazure.es/"&gt;Event-Website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="azure-tour-2026"&gt;Azure Tour 2026&lt;/h2&gt;
&lt;p&gt;Neben Madrid umfasst die Global Azure Tour 2026 auch Stationen in &lt;strong&gt;Zaragoza&lt;/strong&gt;, &lt;strong&gt;Teneriffa&lt;/strong&gt; und &lt;strong&gt;Sevilla&lt;/strong&gt;.&lt;/p&gt;</content:encoded></item><item><title>Hör auf, dein Terminal zu babysitzen: Aspires Detached Mode verändert den Workflow</title><link>https://thedotnetblog.com/de/news/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/de/news/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/</guid><description>Aspire 13.2 lässt dich deinen AppHost im Hintergrund ausführen und gibt dir dein Terminal zurück. Kombiniert mit neuen CLI-Befehlen und Agent-Unterstützung ist das wichtiger als es klingt.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Dieser Beitrag wurde automatisch übersetzt. Die Originalversion finden Sie &lt;a href="https://thedotnetblog.com/de/news/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/"&gt;hier&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jedes Mal, wenn du einen Aspire AppHost startest, ist dein Terminal weg. Gesperrt. Belegt, bis du Ctrl+C drückst. Musst du schnell einen Befehl ausführen? Öffne einen neuen Tab. Willst du Logs prüfen? Noch ein Tab. Es ist eine kleine Reibung, die sich schnell summiert.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 behebt das. James Newton-King hat &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;alle Details aufgeschrieben&lt;/a&gt;, und ehrlich gesagt ist das eines dieser Features, das sofort verändert, wie man arbeitet.&lt;/p&gt;
&lt;h2 id="detached-mode-ein-befehl-terminal-zurück"&gt;Detached Mode: ein Befehl, Terminal zurück&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;Das ist die Kurzform für &lt;code&gt;aspire run --detach&lt;/code&gt;. Dein AppHost startet im Hintergrund und du bekommst dein Terminal sofort zurück. Keine Extra-Tabs. Kein Terminal-Multiplexer. Einfach dein Prompt, bereit loszulegen.&lt;/p&gt;
&lt;h2 id="laufende-prozesse-verwalten"&gt;Laufende Prozesse verwalten&lt;/h2&gt;
&lt;p&gt;Die Sache ist — im Hintergrund laufen lassen ist nur nützlich, wenn man auch verwalten kann, was da draußen läuft. Aspire 13.2 liefert einen vollständigen Satz an CLI-Befehlen genau dafür:&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;# List all running AppHosts&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;# Inspect the state of a specific AppHost&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;# Stream logs from a running AppHost&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;# Stop a specific AppHost&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;Das macht die Aspire CLI zu einem echten Prozessmanager. Du kannst mehrere AppHosts starten, ihren Status prüfen, ihre Logs verfolgen und sie herunterfahren — alles aus einer einzigen Terminal-Sitzung.&lt;/p&gt;
&lt;h2 id="kombiniere-es-mit-dem-isolierten-modus"&gt;Kombiniere es mit dem isolierten Modus&lt;/h2&gt;
&lt;p&gt;Der Detached Mode passt natürlich zum isolierten Modus. Willst du zwei Instanzen desselben Projekts im Hintergrund ohne Port-Konflikte laufen lassen?&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;Jede bekommt zufällige Ports, separate Secrets und ihren eigenen Lebenszyklus. Verwende &lt;code&gt;aspire ps&lt;/code&gt;, um beide zu sehen, &lt;code&gt;aspire stop&lt;/code&gt;, um den zu beenden, den du nicht mehr brauchst.&lt;/p&gt;
&lt;h2 id="warum-das-für-coding-agents-riesig-ist"&gt;Warum das für Coding-Agents riesig ist&lt;/h2&gt;
&lt;p&gt;Hier wird es richtig interessant. Ein Coding-Agent, der in deinem Terminal arbeitet, kann jetzt:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Die App mit &lt;code&gt;aspire start&lt;/code&gt; starten&lt;/li&gt;
&lt;li&gt;Ihren Zustand mit &lt;code&gt;aspire describe&lt;/code&gt; abfragen&lt;/li&gt;
&lt;li&gt;Logs mit &lt;code&gt;aspire logs&lt;/code&gt; prüfen, um Probleme zu diagnostizieren&lt;/li&gt;
&lt;li&gt;Sie mit &lt;code&gt;aspire stop&lt;/code&gt; beenden, wenn er fertig ist&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Alles ohne die Terminal-Sitzung zu verlieren. Vor dem Detached Mode hätte sich ein Agent, der deinen AppHost ausführt, aus seinem eigenen Terminal ausgesperrt. Jetzt kann er starten, beobachten, iterieren und aufräumen — genau so, wie man es von einem autonomen Agenten erwartet.&lt;/p&gt;
&lt;p&gt;Das Aspire-Team hat hier bewusst investiert. &lt;code&gt;aspire agent init&lt;/code&gt; richtet eine Aspire-Skill-Datei ein, die Agents diese Befehle beibringt. So können Tools wie Copilots Coding-Agent deine Aspire-Workloads direkt verwalten.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Der Detached Mode ist ein Workflow-Upgrade, das sich als einfaches Flag tarnt. Du hörst auf, zwischen Terminals zu wechseln, Agents blockieren sich nicht mehr selbst, und die neuen CLI-Befehle geben dir echte Sichtbarkeit über das, was läuft. Es ist praktisch, es ist sauber, und es macht den täglichen Entwicklungszyklus spürbar flüssiger.&lt;/p&gt;
&lt;p&gt;Lies den &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;vollständigen Beitrag&lt;/a&gt; für alle Details und hole dir Aspire 13.2 mit &lt;code&gt;aspire update --self&lt;/code&gt;.&lt;/p&gt;</content:encoded></item><item><title>.NET Aspire 13.2 Will der Beste Freund Deines KI-Agenten Sein</title><link>https://thedotnetblog.com/de/news/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/de/news/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</guid><description>Aspire 13.2 setzt voll auf agentische Entwicklung — strukturierte CLI-Ausgabe, isolierte Ausführungen, selbstheilende Umgebungen und vollständige OpenTelemetry-Daten, damit deine KI-Agenten deine Apps tatsächlich bauen, ausführen und beobachten können.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Dieser Beitrag wurde automatisch übersetzt. Die Originalversion finden Sie &lt;a href="https://thedotnetblog.com/de/news/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/"&gt;hier&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Kennst du den Moment, wenn dein KI-Agent soliden Code schreibt, du begeistert bist, und dann alles zusammenbricht, wenn er versucht, das Ding tatsächlich &lt;em&gt;auszuführen&lt;/em&gt;? Port-Konflikte, Geister-Prozesse, falsche Umgebungsvariablen — plötzlich verbrennt dein Agent Tokens beim Troubleshooting von Startproblemen statt Features zu bauen.&lt;/p&gt;
&lt;p&gt;Das Aspire-Team hat gerade einen &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;wirklich durchdachten Post&lt;/a&gt; über genau dieses Problem veröffentlicht, und ihre Antwort ist überzeugend: Aspire 13.2 ist nicht nur für Menschen konzipiert, sondern auch für KI-Agenten.&lt;/p&gt;
&lt;h2 id="das-problem-ist-real"&gt;Das Problem ist real&lt;/h2&gt;
&lt;p&gt;KI-Agenten sind unglaublich gut im Code schreiben. Aber eine funktionierende Full-Stack-App zu liefern, erfordert viel mehr als nur Dateien zu generieren. Du musst Services in der richtigen Reihenfolge starten, Ports verwalten, Umgebungsvariablen setzen, Datenbanken verbinden und Feedback bekommen, wenn etwas kaputt geht. Im Moment handhaben die meisten Agenten all das durch Trial-and-Error — Befehle ausführen, Fehlerausgaben lesen, es nochmal versuchen.&lt;/p&gt;
&lt;p&gt;Wir packen Markdown-Anleitungen, Custom Skills und Prompts drauf, um sie zu leiten, aber die sind unvorhersehbar, können nicht kompiliert werden und kosten Tokens allein zum Parsen. Das Aspire-Team hat den Kern erkannt: Agenten brauchen &lt;strong&gt;Compiler und strukturierte APIs&lt;/strong&gt;, nicht mehr Markdown.&lt;/p&gt;
&lt;h2 id="aspire-als-agenten-infrastruktur"&gt;Aspire als Agenten-Infrastruktur&lt;/h2&gt;
&lt;p&gt;Das bringt Aspire 13.2 für die agentische Entwicklung mit:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dein gesamter Stack in typisiertem Code.&lt;/strong&gt; Der AppHost definiert deine komplette Topologie — API, Frontend, Datenbank, Cache — in kompilierbarem TypeScript oder C#:&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;Ein Agent kann das lesen, um die App-Topologie zu verstehen, Ressourcen hinzuzufügen, Verbindungen zu verkabeln und &lt;em&gt;zum Verifizieren zu kompilieren&lt;/em&gt;. Der Compiler sagt ihm sofort, wenn etwas falsch ist. Kein Raten, kein Trial-and-Error mit Konfigurationsdateien.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ein Befehl um sie alle zu starten.&lt;/strong&gt; Statt dass Agenten &lt;code&gt;docker compose up&lt;/code&gt;, &lt;code&gt;npm run dev&lt;/code&gt; und Datenbank-Startskripte jonglieren, ist alles einfach &lt;code&gt;aspire start&lt;/code&gt;. Alle Ressourcen starten in der richtigen Reihenfolge, auf den richtigen Ports, mit der richtigen Konfiguration. Langlebige Prozesse blockieren den Agenten auch nicht — Aspire verwaltet sie.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Isolierter Modus für parallele Agenten.&lt;/strong&gt; Mit &lt;code&gt;--isolated&lt;/code&gt; bekommt jeder Aspire-Lauf eigene zufällige Ports und separate User Secrets. Mehrere Agenten arbeiten über Git Worktrees hinweg? Sie kollidieren nicht. Das ist riesig für Tools wie VS Codes Background-Agenten, die parallele Umgebungen aufspannen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agenten-Augen durch Telemetrie.&lt;/strong&gt; Hier wird es richtig mächtig. Die Aspire CLI stellt während der Entwicklung volle OpenTelemetry-Daten bereit — Traces, Metriken, strukturierte Logs. Dein Agent liest nicht einfach Konsolenausgaben und hofft das Beste. Er kann eine fehlgeschlagene Anfrage über Services hinweg tracen, langsame Endpunkte profilen und genau identifizieren, wo Dinge kaputtgehen. Das ist Observability auf Produktionsniveau in der Entwicklungsschleife.&lt;/p&gt;
&lt;h2 id="die-bowlingbahn-bumper-analogie"&gt;Die Bowlingbahn-Bumper-Analogie&lt;/h2&gt;
&lt;p&gt;Das Aspire-Team nutzt eine großartige Analogie: Denk an Aspire als Bowlingbahn-Bumper für KI-Agenten. Wenn der Agent nicht perfekt ist (und das wird er nicht sein), verhindern die Bumper, dass er Rinnenschüsse wirft. Die Stack-Definition verhindert Fehlkonfiguration, der Compiler fängt Fehler, die CLI übernimmt das Prozessmanagement, und die Telemetrie liefert die Feedback-Schleife.&lt;/p&gt;
&lt;p&gt;Kombiniere das mit etwas wie Playwright CLI, und dein Agent kann deine App tatsächlich &lt;em&gt;benutzen&lt;/em&gt; — durch Flows klicken, das DOM prüfen, kaputte Dinge in der Telemetrie sehen, den Code fixen, neustarten und erneut testen. Bauen, ausführen, beobachten, fixen. Das ist die autonome Entwicklungsschleife, die wir verfolgt haben.&lt;/p&gt;
&lt;h2 id="erste-schritte"&gt;Erste Schritte&lt;/h2&gt;
&lt;p&gt;Neu bei Aspire? Installiere die CLI von &lt;a href="https://get.aspire.dev"&gt;get.aspire.dev&lt;/a&gt; und folge dem &lt;a href="https://aspire.dev/get-started/first-app"&gt;Getting-Started-Guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nutzt du Aspire bereits? Führe &lt;code&gt;aspire update --self&lt;/code&gt; aus, um Version 13.2 zu bekommen, und zeige dann deinem Lieblings-Coding-Agenten dein Repo. Du wirst überrascht sein, wie viel weiter er mit Aspires Leitplanken kommt.&lt;/p&gt;
&lt;h2 id="zusammenfassung"&gt;Zusammenfassung&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 ist nicht mehr nur ein Framework für verteilte Apps — es wird zur essentiellen Agenten-Infrastruktur. Strukturierte Stack-Definitionen, Ein-Befehl-Start, isolierte parallele Ausführungen und Echtzeit-Telemetrie geben KI-Agenten genau das, was sie brauchen, um vom Code-Schreiben zum App-Liefern zu kommen.&lt;/p&gt;
&lt;p&gt;Lies den &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;vollständigen Post&lt;/a&gt; vom Aspire-Team für alle Details und Demo-Videos.&lt;/p&gt;</content:encoded></item><item><title>Aspires Isolierter Modus Behebt den Port-Konflikt-Albtraum für Parallele Entwicklung</title><link>https://thedotnetblog.com/de/news/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/de/news/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/</guid><description>Aspire 13.2 führt den --isolated Modus ein: zufällige Ports, getrennte Secrets und null Kollisionen beim gleichzeitigen Ausführen mehrerer Instanzen desselben AppHosts. Perfekt für KI-Agenten, Worktrees und parallele Workflows.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Dieser Beitrag wurde automatisch übersetzt. Die Originalversion finden Sie &lt;a href="https://thedotnetblog.com/de/news/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/"&gt;hier&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Wenn du jemals versucht hast, zwei Instanzen desselben Projekts gleichzeitig zu starten, kennst du den Schmerz. Port 8080 wird bereits verwendet. Port 17370 ist belegt. Etwas killen, neustarten, Umgebungsvariablen jonglieren — ein echter Produktivitätskiller.&lt;/p&gt;
&lt;p&gt;Dieses Problem wird schlimmer, nicht besser. KI-Agenten erstellen Git Worktrees um unabhängig zu arbeiten. Hintergrund-Agenten starten separate Umgebungen. Entwickler checken dasselbe Repo zweimal für Feature-Branches aus. Jedes dieser Szenarien läuft gegen dieselbe Wand: Zwei Instanzen derselben App kämpfen um dieselben Ports.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 behebt das mit einem einzigen Flag. James Newton-King vom Aspire-Team hat &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;alle Details aufgeschrieben&lt;/a&gt;, und es ist eines dieser „warum hatten wir das nicht schon früher&amp;quot;-Features.&lt;/p&gt;
&lt;h2 id="die-lösung---isolated"&gt;Die Lösung: &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;Das war&amp;rsquo;s. Jeder Lauf bekommt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zufällige Ports&lt;/strong&gt; — keine Kollisionen mehr zwischen Instanzen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Isolierte User Secrets&lt;/strong&gt; — Connection Strings und API Keys bleiben pro Instanz getrennt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Keine manuelle Port-Neuzuweisung. Kein Umgebungsvariablen-Jonglieren. Jeder Lauf bekommt automatisch eine frische, kollisionsfreie Umgebung.&lt;/p&gt;
&lt;h2 id="reale-szenarien-in-denen-das-glänzt"&gt;Reale Szenarien, in denen das glänzt&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Mehrere Checkouts.&lt;/strong&gt; Du hast einen Feature-Branch in einem Verzeichnis und einen Bugfix in einem anderen:&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;Beide laufen ohne Konflikte. Das Dashboard zeigt, was wo läuft.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hintergrund-Agenten in VS Code.&lt;/strong&gt; Wenn der Hintergrund-Agent von Copilot Chat einen Git Worktree erstellt um unabhängig an deinem Code zu arbeiten, muss er möglicherweise deinen Aspire AppHost starten. Ohne &lt;code&gt;--isolated&lt;/code&gt; ist das ein Port-Konflikt mit deinem primären Worktree. Mit ihm funktionieren einfach beide Instanzen.&lt;/p&gt;
&lt;p&gt;Der Aspire-Skill, der mit &lt;code&gt;aspire agent init&lt;/code&gt; mitkommt, weist Agenten automatisch an, &lt;code&gt;--isolated&lt;/code&gt; zu verwenden, wenn sie in Worktrees arbeiten. So sollte Copilots Hintergrund-Agent das von Haus aus richtig handhaben.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Integrationstests parallel zur Entwicklung.&lt;/strong&gt; Tests gegen einen laufenden AppHost ausführen während du weiter Features baust? Der isolierte Modus gibt jedem Kontext eigene Ports und Konfiguration.&lt;/p&gt;
&lt;h2 id="wie-es-unter-der-haube-funktioniert"&gt;Wie es unter der Haube funktioniert&lt;/h2&gt;
&lt;p&gt;Wenn du &lt;code&gt;--isolated&lt;/code&gt; übergibst, generiert die CLI eine eindeutige Instanz-ID für den Lauf. Das treibt zwei Verhaltensweisen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Port-Randomisierung&lt;/strong&gt; — statt sich an vorhersagbare Ports aus deiner AppHost-Konfiguration zu binden, wählt der isolierte Modus zufällige verfügbare Ports für alles — das Dashboard, Service-Endpoints, alles. Service Discovery passt sich automatisch an, sodass sich Services gegenseitig finden, unabhängig davon, auf welchen Ports sie landen.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Secret-Isolation&lt;/strong&gt; — jeder isolierte Lauf bekommt seinen eigenen User-Secrets-Speicher, der durch die Instanz-ID identifiziert wird. Connection Strings und API Keys eines Laufs lecken nicht in einen anderen.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Dein Code braucht keine Änderungen. Aspires Service Discovery löst Endpoints zur Laufzeit auf, sodass alles korrekt verbunden wird, unabhängig von der Port-Zuweisung.&lt;/p&gt;
&lt;h2 id="wann-man-es-verwenden-sollte"&gt;Wann man es verwenden sollte&lt;/h2&gt;
&lt;p&gt;Verwende &lt;code&gt;--isolated&lt;/code&gt;, wenn du mehrere Instanzen desselben AppHosts gleichzeitig betreibst — sei es für parallele Entwicklung, automatisierte Tests, KI-Agenten oder Git Worktrees. Für Einzelinstanz-Entwicklung, bei der du vorhersagbare Ports bevorzugst, funktioniert das reguläre &lt;code&gt;aspire run&lt;/code&gt; weiterhin bestens.&lt;/p&gt;
&lt;h2 id="zusammenfassung"&gt;Zusammenfassung&lt;/h2&gt;
&lt;p&gt;Der isolierte Modus ist ein kleines Feature, das ein reales, zunehmend häufiges Problem löst. Da KI-gestützte Entwicklung uns in Richtung mehr paralleler Workflows drängt — mehrere Agenten, mehrere Worktrees, mehrere Kontexte — ist die Fähigkeit, einfach eine weitere Instanz hochzufahren ohne um Ports zu kämpfen, essentiell.&lt;/p&gt;
&lt;p&gt;Lies den &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;vollständigen Post&lt;/a&gt; für alle technischen Details und probiere es aus mit &lt;code&gt;aspire update --self&lt;/code&gt; um Version 13.2 zu bekommen.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2 liefert eine Docs-CLI — und dein KI-Agent kann sie auch nutzen</title><link>https://thedotnetblog.com/de/news/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/de/news/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</guid><description>.NET Aspire 13.2 fügt aspire docs hinzu — eine CLI zum Suchen, Durchstöbern und Lesen offizieller Dokumentation, ohne das Terminal zu verlassen. Sie funktioniert auch als Werkzeug für KI-Agenten. Hier erfährst du, warum das wichtig ist.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Dieser Beitrag wurde automatisch übersetzt. Für die Originalversion &lt;a href="https://thedotnetblog.com/de/news/emiliano-montesdeoca/aspire-docs-cli-ai-skills/"&gt;klicke hier&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Kennst du diesen Moment, wenn du tief in einem Aspire AppHost steckst, Integrationen verdrahtest, und du genau nachschauen musst, welche Parameter die Redis-Integration erwartet? Du wechselst mit Alt-Tab zum Browser, suchst auf aspire.dev, kneifst die Augen zusammen bei den API-Docs, und kommst zurück zu deinem Editor. Kontext verloren. Flow unterbrochen.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 hat gerade &lt;a href="https://devblogs.microsoft.com/aspire/aspire-docs-in-your-terminal/"&gt;eine Lösung dafür geliefert&lt;/a&gt;. Die &lt;code&gt;aspire docs&lt;/code&gt;-CLI ermöglicht es dir, offizielle Aspire-Dokumentation direkt aus deinem Terminal zu suchen, durchstöbern und lesen. Und weil sie auf wiederverwendbaren Services basiert, können KI-Agenten und Skills dieselben Befehle nutzen, um Docs nachzuschlagen, statt APIs zu halluzinieren, die gar nicht existieren.&lt;/p&gt;
&lt;h2 id="das-problem-das-hier-wirklich-gelöst-wird"&gt;Das Problem, das hier wirklich gelöst wird&lt;/h2&gt;
&lt;p&gt;David Pine bringt es im Originalbeitrag auf den Punkt: KI-Agenten waren &lt;em&gt;furchtbar&lt;/em&gt; darin, Entwicklern beim Bauen von Aspire-Apps zu helfen. Sie empfahlen &lt;code&gt;dotnet run&lt;/code&gt; statt &lt;code&gt;aspire run&lt;/code&gt;, verwiesen auf learn.microsoft.com für Docs, die auf aspire.dev leben, schlugen veraltete NuGet-Pakete vor, und — mein persönlicher Favorit — halluzinierten APIs, die nicht existieren.&lt;/p&gt;
&lt;p&gt;Warum? Weil Aspire viel länger .NET-spezifisch war, als es polyglott ist, und LLMs mit Trainingsdaten arbeiten, die älter sind als die neuesten Features. Wenn du einem KI-Agenten die Möglichkeit gibst, tatsächlich die aktuellen Docs nachzuschlagen, hört er auf zu raten und wird nützlich.&lt;/p&gt;
&lt;h2 id="drei-befehle-null-browser-tabs"&gt;Drei Befehle, null Browser-Tabs&lt;/h2&gt;
&lt;p&gt;Die CLI ist erfrischend einfach:&lt;/p&gt;
&lt;h3 id="alle-docs-auflisten"&gt;Alle Docs auflisten&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;Gibt jede verfügbare Dokumentationsseite auf aspire.dev zurück. Brauchst du maschinenlesbare Ausgabe? Füge &lt;code&gt;--format Json&lt;/code&gt; hinzu.&lt;/p&gt;
&lt;h3 id="nach-einem-thema-suchen"&gt;Nach einem Thema suchen&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;Durchsucht sowohl Titel als auch Inhalte mit gewichteter Relevanzbewertung. Dieselbe Suchmaschine, die intern die Dokumentationswerkzeuge antreibt. Du bekommst gerankte Ergebnisse mit Titeln, Slugs und Relevanzwerten.&lt;/p&gt;
&lt;h3 id="eine-vollständige-seite-lesen-oder-nur-einen-abschnitt"&gt;Eine vollständige Seite lesen (oder nur einen Abschnitt)&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;Streamt die vollständige Seite als Markdown in dein Terminal. Brauchst du nur einen Abschnitt?&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;Chirurgische Präzision. Kein Scrollen durch 500 Zeilen. Nur der Teil, den du brauchst.&lt;/p&gt;
&lt;h2 id="der-ki-agent-aspekt"&gt;Der KI-Agent-Aspekt&lt;/h2&gt;
&lt;p&gt;Hier wird es interessant für uns Entwickler, die mit KI-Werkzeugen arbeiten. Dieselben &lt;code&gt;aspire docs&lt;/code&gt;-Befehle funktionieren als Tools für KI-Agenten — über Skills, MCP-Server oder einfache CLI-Wrapper.&lt;/p&gt;
&lt;p&gt;Statt dass dein KI-Assistent Aspire-APIs auf Basis veralteter Trainingsdaten erfindet, kann er &lt;code&gt;aspire docs search &amp;quot;postgres&amp;quot;&lt;/code&gt; aufrufen, die offiziellen Integrations-Docs finden, die richtige Seite lesen und dir den dokumentierten Ansatz liefern. Echtzeit-aktuelle Dokumentation — nicht das, was das Modell vor sechs Monaten auswendig gelernt hat.&lt;/p&gt;
&lt;p&gt;Die Architektur dahinter ist bewusst so gestaltet. Das Aspire-Team hat wiederverwendbare Services gebaut (&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;) anstelle einer einmaligen Integration. Das bedeutet, dieselbe Suchmaschine funktioniert für Menschen im Terminal, KI-Agenten in deinem Editor und Automatisierung in deiner CI-Pipeline.&lt;/p&gt;
&lt;h2 id="praxisszenarien"&gt;Praxisszenarien&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Schnelle Terminal-Nachschlagen:&lt;/strong&gt; Du steckst drei Dateien tief und brauchst Redis-Konfigurationsparameter. Zwei Befehle, neunzig Sekunden, zurück an die Arbeit:&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;KI-gestützte Entwicklung:&lt;/strong&gt; Dein VS Code Skill wrapt die CLI-Befehle. Du fragst „Füge eine PostgreSQL-Datenbank zu meinem AppHost hinzu&amp;quot; und der Agent schlägt die echten Docs nach, bevor er antwortet. Keine Halluzinationen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CI/CD-Validierung:&lt;/strong&gt; Deine Pipeline validiert AppHost-Konfigurationen programmatisch gegen offizielle Dokumentation. Die &lt;code&gt;--format Json&lt;/code&gt;-Ausgabe lässt sich sauber mit &lt;code&gt;jq&lt;/code&gt; und anderen Tools weiterverarbeiten.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eigene Wissensdatenbanken:&lt;/strong&gt; Baust du deine eigenen KI-Tools? Leite strukturierte JSON-Ausgabe direkt in deine Wissensdatenbank:&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;Kein Web Scraping. Keine API-Keys. Dieselben strukturierten Daten, die intern von den Dokumentationswerkzeugen genutzt werden.&lt;/p&gt;
&lt;h2 id="die-dokumentation-ist-immer-aktuell"&gt;Die Dokumentation ist immer aktuell&lt;/h2&gt;
&lt;p&gt;Das ist der Teil, den ich am meisten schätze. Die CLI lädt keinen Snapshot herunter — sie fragt aspire.dev mit ETag-basiertem Caching ab. In dem Moment, in dem die Docs aktualisiert werden, spiegelt deine CLI und jeder darauf aufbauende Skill das wider. Keine veralteten Kopien, keine „aber im Wiki stand doch&amp;hellip;&amp;quot;-Momente.&lt;/p&gt;
&lt;h2 id="zum-abschluss"&gt;Zum Abschluss&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;aspire docs&lt;/code&gt; ist eines dieser kleinen Features, das ein echtes Problem sauber löst. Menschen bekommen terminal-nativen Dokumentationszugriff. KI-Agenten bekommen eine Möglichkeit, aufzuhören zu raten und stattdessen echte Docs zu referenzieren. Und alles wird von derselben Wahrheitsquelle gespeist.&lt;/p&gt;
&lt;p&gt;Wenn du mit .NET Aspire baust und die CLI noch nicht ausprobiert hast, führe &lt;code&gt;aspire docs search &amp;quot;dein-thema-hier&amp;quot;&lt;/code&gt; aus und schau, wie es sich anfühlt. Dann überleg dir, diese Befehle in dein KI-Skill- oder Automatisierungs-Setup einzubauen — deine Agenten werden es dir danken.&lt;/p&gt;
&lt;p&gt;Schau dir &lt;a href="https://davidpine.dev/posts/aspire-docs-mcp-tools/"&gt;David Pines Deep Dive&lt;/a&gt; an, wie die Dokumentationswerkzeuge entstanden sind, und die &lt;a href="https://aspire.dev/reference/cli/commands/aspire-docs/"&gt;offizielle CLI-Referenz&lt;/a&gt; für alle Details.&lt;/p&gt;</content:encoded></item><item><title>Das Aspire 13.2 Dashboard hat jetzt eine Telemetrie-API — und das ändert alles</title><link>https://thedotnetblog.com/de/news/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/de/news/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/</guid><description>.NET Aspire 13.2 bringt smarteren Telemetrie-Export, eine programmierbare API für Traces und Logs sowie Verbesserungen der GenAI-Visualisierung. Hier erfährst du, warum das für deinen Debugging-Workflow wichtig ist.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Dieser Beitrag wurde automatisch übersetzt. Für die Originalversion &lt;a href="https://thedotnetblog.com/de/news/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/"&gt;klicke hier&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Wenn du verteilte Apps mit .NET Aspire baust, weißt du bereits, dass das Dashboard das Beste an der ganzen Erfahrung ist. Alle Traces, Logs und Metriken an einem Ort — kein externes Jaeger, kein Seq-Setup, keine „lass mich mal im anderen Terminal schauen&amp;quot;-Momente.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 hat es deutlich besser gemacht. James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-dashboard-improvements-export-and-telemetry/"&gt;hat das Update angekündigt&lt;/a&gt;, und ehrlich gesagt? Die Telemetrie-Export- und API-Features allein rechtfertigen das Upgrade.&lt;/p&gt;
&lt;h2 id="telemetrie-exportieren-wie-ein-normaler-mensch"&gt;Telemetrie exportieren wie ein normaler Mensch&lt;/h2&gt;
&lt;p&gt;Hier ist das Szenario, das wir alle kennen: Du debuggst ein verteiltes Problem, reproduzierst es endlich nach zwanzig Minuten Setup, und jetzt musst du dem Team zeigen, was passiert ist. Vorher? Screenshots. Trace-IDs kopieren und einfügen. Das übliche Chaos.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 fügt einen ordentlichen &lt;strong&gt;Logs und Telemetrie verwalten&lt;/strong&gt;-Dialog hinzu, in dem du:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alle Telemetrie löschen kannst (nützlich vor einem Reproduktionsversuch)&lt;/li&gt;
&lt;li&gt;Ausgewählte Telemetrie als ZIP-Datei im Standard-OTLP/JSON-Format exportieren kannst&lt;/li&gt;
&lt;li&gt;Diese ZIP-Datei später in jedes Aspire-Dashboard reimportieren kannst&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Der letzte Punkt ist das Killer-Feature. Du reproduzierst einen Bug, exportierst die Telemetrie, hängst sie an dein Work Item, und dein Kollege kann sie in sein eigenes Dashboard importieren, um genau das zu sehen, was du gesehen hast. Kein „kannst du das auf deinem Rechner reproduzieren?&amp;quot; mehr.&lt;/p&gt;
&lt;p&gt;Einzelne Traces, Spans und Logs haben auch eine „Export JSON&amp;quot;-Option im Kontextmenü. Musst du einen bestimmten Trace teilen? Rechtsklick, JSON kopieren, in die PR-Beschreibung einfügen. Fertig.&lt;/p&gt;
&lt;h2 id="die-telemetrie-api-ist-der-echte-game-changer"&gt;Die Telemetrie-API ist der echte Game Changer&lt;/h2&gt;
&lt;p&gt;Das begeistert mich am meisten. Das Dashboard bietet jetzt eine HTTP-API unter &lt;code&gt;/api/telemetry&lt;/code&gt; zum programmatischen Abfragen von Telemetriedaten. Verfügbare Endpunkte:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/resources&lt;/code&gt; — Ressourcen mit Telemetrie auflisten&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/spans&lt;/code&gt; — Spans mit Filtern abfragen&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/logs&lt;/code&gt; — Logs mit Filtern abfragen&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/traces&lt;/code&gt; — Traces auflisten&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/traces/{traceId}&lt;/code&gt; — alle Spans für einen bestimmten Trace abrufen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Alles kommt im OTLP-JSON-Format zurück. Das treibt die neuen CLI-Befehle &lt;code&gt;aspire agent mcp&lt;/code&gt; und &lt;code&gt;aspire otel&lt;/code&gt; an, aber die wirkliche Bedeutung ist größer: Du kannst jetzt Tooling, Skripte und KI-Agent-Integrationen bauen, die die Telemetrie deiner App direkt abfragen.&lt;/p&gt;
&lt;p&gt;Stell dir einen KI-Coding-Agent vor, der deine tatsächlichen verteilten Traces beim Debuggen sehen kann. Das ist nicht mehr hypothetisch — genau das ermöglicht diese API.&lt;/p&gt;
&lt;h2 id="genai-telemetrie-wird-praktisch"&gt;GenAI-Telemetrie wird praktisch&lt;/h2&gt;
&lt;p&gt;Wenn du KI-gestützte Apps mit Semantic Kernel oder Microsoft.Extensions.AI baust, wirst du den verbesserten GenAI-Telemetrie-Visualizer zu schätzen wissen. Aspire 13.2 fügt hinzu:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KI-Toolbeschreibungen als Markdown gerendert&lt;/li&gt;
&lt;li&gt;Einen dedizierten GenAI-Button auf der Traces-Seite für schnellen Zugriff&lt;/li&gt;
&lt;li&gt;Bessere Fehlerbehandlung für abgeschnittenes oder nicht-standardmäßiges GenAI-JSON&lt;/li&gt;
&lt;li&gt;Click-to-Highlight-Navigation zwischen Tool-Definitionen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Der Blogpost erwähnt, dass VS Code Copilot Chat, Copilot CLI und OpenCode alle das Konfigurieren eines &lt;code&gt;OTEL_EXPORTER_OTLP_ENDPOINT&lt;/code&gt; unterstützen. Richte sie auf das Aspire-Dashboard und du kannst buchstäblich deinen KI-Agents beim Denken in Echtzeit über Telemetrie zusehen. Das ist ein Debugging-Erlebnis, das du nirgendwo anders findest.&lt;/p&gt;
&lt;h2 id="zusammenfassung"&gt;Zusammenfassung&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 verwandelt das Dashboard von „netter Debugging-UI&amp;quot; zu „programmierbarer Observability-Plattform&amp;quot;. Der Export/Import-Workflow allein spart echte Zeit beim verteilten Debugging, und die Telemetrie-API öffnet die Tür zu KI-gestützter Diagnostik.&lt;/p&gt;
&lt;p&gt;Wenn du bereits Aspire nutzt, aktualisiere. Wenn nicht — das ist ein guter Grund, &lt;a href="https://aspire.dev"&gt;aspire.dev&lt;/a&gt; auszuprobieren.&lt;/p&gt;</content:encoded></item></channel></rss>