<?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/pt/tags/aspire/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>pt</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/pt/tags/aspire/index.xml" rel="self" type="application/rss+xml"/><item><title>Endpoints Privados, VNets, NSGs — Aspire Gerencia a Rede Agora</title><link>https://thedotnetblog.com/pt/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/pt/news/emiliano-montesdeoca/aspire-azure-enterprise-networking-private-endpoints/</guid><description>O novo suporte de rede empresarial do Azure para Aspire permite modelar VNets, endpoints privados, gateways NAT, NSGs e perímetros de segurança de rede diretamente no seu AppHost, sem deriva de infraestrutura.</description><content:encoded>&lt;p&gt;Já vi esse cenário muitas vezes. A aplicação está pronta. A demonstração é ótima. Então aparece a lista de verificação de segurança: tire o armazenamento da internet pública, execute dentro de uma VNet, forneça IPs de saída para a lista de permissões do parceiro, prove que apenas as sub-redes corretas falam com os serviços corretos.&lt;/p&gt;
&lt;p&gt;Nesse ponto o modelo de aplicação e o modelo de infraestrutura começam a divergir de maneiras que são dolorosas de manter.&lt;/p&gt;
&lt;p&gt;O novo suporte de rede empresarial do Azure para Aspire aborda isso diretamente. Você descreve a forma da rede ao lado dos recursos que a usam, no seu AppHost.&lt;/p&gt;
&lt;h2 id="os-blocos-de-construção"&gt;Os Blocos de Construção&lt;/h2&gt;
&lt;p&gt;Aqui está para que serve cada conceito de rede do Azure, destilado:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Recurso&lt;/th&gt;
&lt;th&gt;Use quando&lt;/th&gt;
&lt;th&gt;Por que é importante&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rede virtual&lt;/td&gt;
&lt;td&gt;Você precisa de um espaço de endereçamento privado&lt;/td&gt;
&lt;td&gt;O limite de rede para sub-redes, endpoints privados e roteamento&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sub-rede&lt;/td&gt;
&lt;td&gt;Você precisa separar cargas de trabalho dentro da VNet&lt;/td&gt;
&lt;td&gt;Cada parte do sistema obtém seu próprio intervalo de endereços e superfície de política&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sub-rede delegada&lt;/td&gt;
&lt;td&gt;Um serviço de plataforma (como ACA) precisa gerenciar uma sub-rede&lt;/td&gt;
&lt;td&gt;Permite que o serviço coloque infraestrutura gerenciada em sua VNet com segurança&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gateway NAT&lt;/td&gt;
&lt;td&gt;Você precisa de IPs públicos de saída previsíveis&lt;/td&gt;
&lt;td&gt;Endereço estável para listas de permissões e auditoria&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Endpoint privado&lt;/td&gt;
&lt;td&gt;Você quer um recurso PaaS acessível privatamente&lt;/td&gt;
&lt;td&gt;Coloca um IP privado para esse serviço dentro da sua VNet, remove a exposição pública&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NSG&lt;/td&gt;
&lt;td&gt;Você precisa de regras de tráfego no nível da sub-rede&lt;/td&gt;
&lt;td&gt;Permitir/negar explícito para tráfego de entrada e saída por sub-rede&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="descrevendo-no-seu-apphost"&gt;Descrevendo no seu AppHost&lt;/h2&gt;
&lt;p&gt;A mudança chave aqui é que você está modelando a rede &lt;em&gt;junto&lt;/em&gt; com os recursos que a usam, não em um arquivo Bicep separado que se afasta do modelo de aplicação com o tempo.&lt;/p&gt;
&lt;p&gt;Do AppHost, você pode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Criar VNets e sub-redes com &lt;code&gt;AddVirtualNetwork()&lt;/code&gt; e &lt;code&gt;AddSubnet()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Anexar um gateway NAT às sub-redes para IPs de saída estáveis&lt;/li&gt;
&lt;li&gt;Criar endpoints privados para armazenamento, Key Vault, SQL e outros serviços PaaS&lt;/li&gt;
&lt;li&gt;Definir NSGs com regras de segurança de entrada e saída&lt;/li&gt;
&lt;li&gt;Configurar Perímetros de Segurança de Rede para políticas entre recursos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;O resultado é que quando você executa &lt;code&gt;azd up&lt;/code&gt;, a infraestrutura corresponde ao que o modelo de aplicação diz que precisa. Não o que diz um template mantido manualmente.&lt;/p&gt;
&lt;h2 id="por-que-isso-importa-para-aplicações-reais"&gt;Por Que Isso Importa para Aplicações Reais&lt;/h2&gt;
&lt;p&gt;Algumas coisas que se tornam significativamente mais fáceis quando a rede é modelada no Aspire:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Endpoints privados para Key Vault e armazenamento&lt;/strong&gt; — você descreve &lt;code&gt;WithPrivateEndpoint()&lt;/code&gt; nesses recursos, e o Aspire lida com a configuração da zona DNS e o anexo de endpoints. A aplicação nunca muda.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IPs de saída consistentes&lt;/strong&gt; — adicione um gateway NAT à sub-rede relevante e cada solicitação de saída da sua aplicação passa por um IP conhecido e estável. Os parceiros podem incluí-lo na lista de permissões. Os auditores podem rastreá-lo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Regras NSG do código&lt;/strong&gt; — em vez de clicar no portal ou manter um trecho Bicep, suas regras de segurança vivem no AppHost ao lado dos recursos que protegem.&lt;/p&gt;
&lt;p&gt;Este é o tipo de integração que não torna as demonstrações emocionantes, mas torna os sistemas de produção manuteníveis.&lt;/p&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;A segurança de rede aparecendo tarde no ciclo de vida do projeto é um problema resolvido se você a modelar junto com a aplicação desde o início. O suporte de rede empresarial do Aspire torna isso possível sem exigir um rastreamento de infraestrutura separado.&lt;/p&gt;
&lt;p&gt;Detalhes completos na publicação original: &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: Suporte ao Kubernetes, Logs do Navegador e a Skill Aspireify</title><link>https://thedotnetblog.com/pt/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/pt/news/emiliano-montesdeoca/aspire-133-kubernetes-browser-logs-aspireify/</guid><description>Cinco semanas após o 13.2, o Aspire 13.3 chega com 45 novos recursos, incluindo implantação AKS de primeira classe, uma skill de integração assistida por IA, captura de logs do navegador e resultados de comandos estruturados.</description><content:encoded>&lt;p&gt;Cinco semanas não é muito tempo para um lançamento, mas o Aspire 13.3 não parece assim. Os itens principais são significativos: implantação de Kubernetes e AKS de primeira classe com Helm, uma skill de integração assistida por agente chamada Aspireify, captura de logs do navegador diretamente no dashboard e resultados de comandos estruturados. Além disso, 45 novos recursos, 134 melhorias e 93 correções de bugs.&lt;/p&gt;
&lt;p&gt;Vamos aos destaques.&lt;/p&gt;
&lt;h2 id="aspireify-integração-assistida-por-agente"&gt;Aspireify: Integração Assistida por Agente&lt;/h2&gt;
&lt;p&gt;Adicionar o Aspire a um projeto existente parece simples — coloque um AppHost, pronto. Na prática, envolve muita arqueologia: quais portas importam, quais variáveis de ambiente são dependências reais, quais serviços do Docker Compose devem ser mapeados para integrações do Aspire.&lt;/p&gt;
&lt;p&gt;A nova &lt;strong&gt;skill Aspireify&lt;/strong&gt; fornece ao seu agente de código um fluxo de trabalho guiado exatamente para isso. Quando &lt;code&gt;aspire init&lt;/code&gt; cria um AppHost esqueleto, a skill Aspireify ajuda o agente a inspecionar o repositório, entender como já funciona e conectar o AppHost para se adaptar ao aplicativo — não o contrário.&lt;/p&gt;
&lt;p&gt;A postura padrão é &amp;ldquo;minimizar alterações no seu código.&amp;rdquo; Se o seu aplicativo já lê &lt;code&gt;DATABASE_URL&lt;/code&gt;, o agente mapeia isso com &lt;code&gt;WithEnvironment()&lt;/code&gt; em vez de pedir que você reescreva sua configuração. Se uma porta está codificada de forma fixa, a skill indica ao agente quando preservá-la.&lt;/p&gt;
&lt;p&gt;Este é o tipo de tooling de IA que realmente economiza tempo em vez de gerar mais trabalho para revisar.&lt;/p&gt;
&lt;h2 id="implantação-de-kubernetes-e-aks-de-primeira-classe"&gt;Implantação de Kubernetes e AKS de Primeira Classe&lt;/h2&gt;
&lt;p&gt;Esta estava na lista de desejos há algum tempo. O Aspire 13.3 inclui &lt;strong&gt;suporte de implantação de Kubernetes e AKS de primeira classe com Helm&lt;/strong&gt;. Agora você pode direcionar o AKS como destino de implantação diretamente das ferramentas do Aspire.&lt;/p&gt;
&lt;p&gt;Para equipes que já executam cargas de trabalho de produção no AKS, isso fecha uma lacuna significativa. Seu modelo de aplicativo Aspire agora tem um caminho limpo do desenvolvimento local ao Kubernetes sem a necessidade de escrever manualmente charts Helm.&lt;/p&gt;
&lt;h2 id="logs-do-navegador-no-dashboard"&gt;Logs do Navegador no Dashboard&lt;/h2&gt;
&lt;p&gt;Esta é uma daquelas funcionalidades que parecem pequenas até você estar depurando um problema de frontend.&lt;/p&gt;
&lt;p&gt;A nova API &lt;code&gt;WithBrowserLogs()&lt;/code&gt; anexa um recurso de navegador rastreado a qualquer recurso capaz de endpoints. O Aspire lança o Chromium usando um pipe CDP privado e transmite logs do console, solicitações de rede e erros diretamente no fluxo de logs do recurso:&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;O AppHost TypeScript suporta o mesmo:&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;Erros de console, solicitações de rede com falha, exceções do lado do cliente — tudo visível no mesmo dashboard onde você já está observando traces e métricas. Sem necessidade de trocar de aba para o DevTools do navegador para as coisas básicas.&lt;/p&gt;
&lt;h2 id="resultados-de-comandos-estruturados"&gt;Resultados de Comandos Estruturados&lt;/h2&gt;
&lt;p&gt;Os comandos de recursos receberam uma atualização significativa. Até agora, os comandos retornavam sucesso/falha. Agora eles retornam resultados estruturados: texto, JSON ou markdown que flui pelo modelo, pela interface do dashboard, pela CLI e pelas ferramentas MCP.&lt;/p&gt;
&lt;p&gt;O dashboard une tudo isso com um novo centro de notificações no cabeçalho. Os resultados dos comandos aparecem como notificações com carimbo de data/hora com renderização de markdown e uma ação &amp;ldquo;Ver resposta&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Isso torna os comandos de recursos verdadeiramente combináveis. Uma integração agora pode expor um comando que retorna uma saída significativa — como uma URL de túnel — em vez de simplesmente alterar o estado em algum lugar.&lt;/p&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;O Aspire 13.3 vale a atualização mesmo que seja apenas pelo suporte ao Kubernetes. Os logs do navegador e os resultados de comandos estruturados parecem o tipo de melhorias de qualidade de vida que se acumulam rapidamente em um fluxo de trabalho de desenvolvimento diário.&lt;/p&gt;
&lt;p&gt;Notas de versão completas: &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: Suporte a Bun, Melhores Contêineres e Menos Fricção no Debug</title><link>https://thedotnetblog.com/pt/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/pt/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</guid><description>Aspire 13.2 adiciona suporte de primeira classe ao Bun para apps Vite, corrige confiabilidade do Yarn e traz melhorias em contêineres que tornam o comportamento local mais previsível.</description><content:encoded>&lt;p&gt;&lt;em&gt;Esta postagem foi traduzida automaticamente. Para a versão original, &lt;a href="https://thedotnetblog.com/posts/emiliano-montesdeoca/aspire-132-bun-container-enhancements/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Se você vem construindo backends .NET com frontends JavaScript no Aspire, a 13.2 é o tipo de atualização que melhora seu dia silenciosamente.&lt;/p&gt;
&lt;h2 id="bun-é-agora-cidadão-de-primeira-classe"&gt;Bun é Agora Cidadão de Primeira Classe&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;Se sua equipe já usa Bun, o Aspire não te força mais a nadar contra a corrente.&lt;/p&gt;
&lt;h2 id="yarn-ficou-mais-confiável"&gt;Yarn Ficou Mais Confiável&lt;/h2&gt;
&lt;p&gt;Usuários do Yarn recebem menos falhas misteriosas com &lt;code&gt;withYarn()&lt;/code&gt; e &lt;code&gt;addViteApp()&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="melhorias-em-contêineres"&gt;Melhorias em Contêineres&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ImagePullPolicy.Never&lt;/code&gt; para usar a imagem local sem ir ao registry. PostgreSQL 18+ com volumes de dados agora funciona corretamente.&lt;/p&gt;
&lt;h2 id="melhorias-de-debug"&gt;Melhorias de Debug&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DebuggerDisplayAttribute&lt;/code&gt; em tipos core&lt;/li&gt;
&lt;li&gt;Mensagens de erro melhores para &lt;code&gt;WaitFor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BeforeResourceStartedEvent&lt;/code&gt; disparado no momento certo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Post original de 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/pt/events/global-azure-spain-2026/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><guid>https://thedotnetblog.com/pt/events/global-azure-spain-2026/</guid><description>O maior evento comunitário de Azure na Espanha — um dia inteiro de sessões sobre Azure, IA, dados, segurança e desenvolvimento cloud-native com 38 palestrantes em 3 trilhas.</description><content:encoded>&lt;p&gt;Global Azure Spain 2026 acontece em &lt;strong&gt;18 de abril de 2026&lt;/strong&gt; no &lt;strong&gt;Kinépolis Diversia&lt;/strong&gt; em Alcobendas, Madri. É o maior evento comunitário Azure da Espanha, reunindo 38 palestrantes em 3 trilhas paralelas cobrindo agentes de IA, redes Azure, Cosmos DB, Fabric, IoT, segurança e muito mais.&lt;/p&gt;
&lt;p&gt;O evento vai das &lt;strong&gt;08:30 às 18:30&lt;/strong&gt; e inclui keynote, intervalos para café, almoço e uma sessão de encerramento com perguntas.&lt;/p&gt;
&lt;h2 id="destaques-da-agenda"&gt;Destaques da agenda&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Domando Agentes de IA&lt;/strong&gt;: governança, ferramentas e APIs com Azure AI Foundry e 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;: sistemas multi-agente em ação&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="ingressos"&gt;Ingressos&lt;/h2&gt;
&lt;p&gt;A inscrição é uma doação simbólica — o valor total do ingresso vai diretamente para a &lt;strong&gt;Plan International&lt;/strong&gt;, apoiando os direitos das crianças e a igualdade no mundo. Capacidade limitada, então garanta seu lugar cedo.&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;Ingressos no Eventbrite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://globalazure.es/"&gt;Site do evento&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;Além de Madri, o Global Azure Tour 2026 também inclui paradas em &lt;strong&gt;Zaragoza&lt;/strong&gt;, &lt;strong&gt;Tenerife&lt;/strong&gt; e &lt;strong&gt;Sevilha&lt;/strong&gt;.&lt;/p&gt;</content:encoded></item><item><title>Pare de ficar de olho no seu terminal: o modo desacoplado do Aspire muda o fluxo de trabalho</title><link>https://thedotnetblog.com/pt/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/pt/news/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/</guid><description>O Aspire 13.2 permite executar seu AppHost em segundo plano e recuperar seu terminal. Combinado com os novos comandos CLI e suporte a agentes, isso é mais importante do que parece.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post foi traduzido automaticamente. Para a versão original, &lt;a href="https://thedotnetblog.com/pt/news/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Toda vez que você executa um AppHost do Aspire, seu terminal some. Travado. Ocupado até você pressionar Ctrl+C. Precisa rodar um comando rápido? Abra outra aba. Quer verificar os logs? Mais uma aba. É um pequeno atrito que se acumula rápido.&lt;/p&gt;
&lt;p&gt;O Aspire 13.2 resolve isso. James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;escreveu todos os detalhes&lt;/a&gt;, e sinceramente, essa é uma daquelas funcionalidades que muda imediatamente a forma como você trabalha.&lt;/p&gt;
&lt;h2 id="modo-desacoplado-um-comando-terminal-de-volta"&gt;Modo desacoplado: um comando, terminal de volta&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;Esse é o atalho para &lt;code&gt;aspire run --detach&lt;/code&gt;. Seu AppHost inicia em segundo plano e você recupera seu terminal imediatamente. Sem abas extras. Sem multiplexador de terminal. Apenas seu prompt, pronto para usar.&lt;/p&gt;
&lt;h2 id="gerenciando-o-que-está-rodando"&gt;Gerenciando o que está rodando&lt;/h2&gt;
&lt;p&gt;A questão é — rodar em segundo plano só é útil se você conseguir gerenciar o que está lá fora. O Aspire 13.2 traz um conjunto completo de comandos CLI para exatamente isso:&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;Isso transforma o CLI do Aspire em um verdadeiro gerenciador de processos. Você pode iniciar múltiplos AppHosts, verificar seus status, acompanhar seus logs e encerrá-los — tudo a partir de uma única sessão de terminal.&lt;/p&gt;
&lt;h2 id="combine-com-o-modo-isolado"&gt;Combine com o modo isolado&lt;/h2&gt;
&lt;p&gt;O modo desacoplado combina naturalmente com o modo isolado. Quer rodar duas instâncias do mesmo projeto em segundo plano sem conflitos de porta?&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;Cada uma recebe portas aleatórias, secrets separados e seu próprio ciclo de vida. Use &lt;code&gt;aspire ps&lt;/code&gt; para ver ambas, &lt;code&gt;aspire stop&lt;/code&gt; para encerrar a que você não precisa mais.&lt;/p&gt;
&lt;h2 id="por-que-isso-é-enorme-para-agentes-de-código"&gt;Por que isso é enorme para agentes de código&lt;/h2&gt;
&lt;p&gt;É aqui que fica realmente interessante. Um agente de código trabalhando no seu terminal agora pode:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Iniciar a app com &lt;code&gt;aspire start&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Consultar seu estado com &lt;code&gt;aspire describe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Verificar logs com &lt;code&gt;aspire logs&lt;/code&gt; para diagnosticar problemas&lt;/li&gt;
&lt;li&gt;Parar com &lt;code&gt;aspire stop&lt;/code&gt; quando terminar&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tudo sem perder a sessão do terminal. Antes do modo desacoplado, um agente que executasse seu AppHost ficava preso no próprio terminal. Agora ele pode iniciar, observar, iterar e limpar — exatamente como você gostaria que um agente autônomo funcionasse.&lt;/p&gt;
&lt;p&gt;A equipe do Aspire investiu nisso. Executar &lt;code&gt;aspire agent init&lt;/code&gt; configura um arquivo de habilidades do Aspire que ensina esses comandos aos agentes. Assim, ferramentas como o agente de código do Copilot podem gerenciar suas cargas de trabalho do Aspire diretamente.&lt;/p&gt;
&lt;h2 id="finalizando"&gt;Finalizando&lt;/h2&gt;
&lt;p&gt;O modo desacoplado é uma melhoria de fluxo de trabalho disfarçada de uma simples flag. Você para de alternar contexto entre terminais, agentes param de se bloquear, e os novos comandos CLI dão visibilidade real do que está rodando. É prático, é limpo, e torna o ciclo de desenvolvimento diário visivelmente mais fluido.&lt;/p&gt;
&lt;p&gt;Leia o &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;post completo&lt;/a&gt; para todos os detalhes e obtenha o Aspire 13.2 com &lt;code&gt;aspire update --self&lt;/code&gt;.&lt;/p&gt;</content:encoded></item><item><title>.NET Aspire 13.2 Quer Ser o Melhor Amigo do Seu Agente de IA</title><link>https://thedotnetblog.com/pt/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/pt/news/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</guid><description>Aspire 13.2 aposta tudo no desenvolvimento agêntico — saída CLI estruturada, execuções isoladas, ambientes auto-reparáveis e dados OpenTelemetry completos para que seus agentes de IA possam realmente construir, executar e observar suas apps.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post foi traduzido automaticamente. Para a versão original, &lt;a href="https://thedotnetblog.com/pt/news/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sabe aquele momento quando seu agente de IA escreve um código sólido, você fica empolgado, e aí tudo desmorona quando ele tenta &lt;em&gt;executar&lt;/em&gt; a coisa? Conflitos de porta, processos fantasma, variáveis de ambiente erradas — de repente seu agente está queimando tokens fazendo troubleshooting de problemas de inicialização em vez de construir funcionalidades.&lt;/p&gt;
&lt;p&gt;O time do Aspire acabou de publicar um &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;post muito bem pensado&lt;/a&gt; sobre exatamente esse problema, e a resposta deles é convincente: Aspire 13.2 foi projetado não apenas para humanos, mas para agentes de IA.&lt;/p&gt;
&lt;h2 id="o-problema-é-real"&gt;O problema é real&lt;/h2&gt;
&lt;p&gt;Agentes de IA são incríveis escrevendo código. Mas entregar uma app full-stack funcional envolve muito mais do que gerar arquivos. Você precisa iniciar serviços na ordem certa, gerenciar portas, configurar variáveis de ambiente, conectar bancos de dados e obter feedback quando as coisas quebram. Agora, a maioria dos agentes lida com tudo isso por tentativa e erro — executando comandos, lendo saída de erros, tentando de novo.&lt;/p&gt;
&lt;p&gt;Nós empilhamos instruções Markdown, skills personalizados e prompts para guiá-los, mas são imprevisíveis, não podem ser compilados e custam tokens só para fazer parse. O time do Aspire acertou no insight central: agentes precisam de &lt;strong&gt;compiladores e APIs estruturadas&lt;/strong&gt;, não mais Markdown.&lt;/p&gt;
&lt;h2 id="aspire-como-infraestrutura-para-agentes"&gt;Aspire como infraestrutura para agentes&lt;/h2&gt;
&lt;p&gt;Eis o que o Aspire 13.2 traz para a mesa do desenvolvimento agêntico:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Toda a sua stack em código tipado.&lt;/strong&gt; O AppHost define toda sua topologia — API, frontend, banco de dados, cache — em TypeScript ou C# compilável:&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;Um agente pode ler isso para entender a topologia da app, adicionar recursos, conectar componentes e &lt;em&gt;compilar para verificar&lt;/em&gt;. O compilador diz imediatamente se algo está errado. Sem adivinhação, sem tentativa e erro com arquivos de configuração.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Um comando para governar todos.&lt;/strong&gt; Em vez de agentes malabarizando &lt;code&gt;docker compose up&lt;/code&gt;, &lt;code&gt;npm run dev&lt;/code&gt; e scripts de inicialização de banco de dados, tudo é simplesmente &lt;code&gt;aspire start&lt;/code&gt;. Todos os recursos são lançados na ordem certa, nas portas certas, com a configuração certa. Processos de longa duração também não travam o agente — o Aspire os gerencia.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modo isolado para agentes paralelos.&lt;/strong&gt; Com &lt;code&gt;--isolated&lt;/code&gt;, cada execução do Aspire recebe suas próprias portas aleatórias e segredos de usuário separados. Tem múltiplos agentes trabalhando em git worktrees? Eles não vão colidir. Isso é enorme para ferramentas como os agentes em segundo plano do VS Code que criam ambientes paralelos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Olhos de agente através de telemetria.&lt;/strong&gt; Aqui é onde fica realmente poderoso. A CLI do Aspire expõe dados OpenTelemetry completos durante o desenvolvimento — traces, métricas, logs estruturados. Seu agente não está apenas lendo saída de console e torcendo pelo melhor. Ele pode rastrear uma requisição falhada entre serviços, perfilar endpoints lentos e identificar exatamente onde as coisas quebram. Isso é observabilidade de nível produção no ciclo de desenvolvimento.&lt;/p&gt;
&lt;h2 id="a-analogia-dos-para-choques-de-boliche"&gt;A analogia dos para-choques de boliche&lt;/h2&gt;
&lt;p&gt;O time do Aspire usa uma ótima analogia: pense no Aspire como os para-choques de pista de boliche para agentes de IA. Se o agente não for perfeito (e não será), os para-choques evitam que ele jogue na canaleta. A definição do stack previne erros de configuração, o compilador captura erros, a CLI gerencia processos e a telemetria fornece o ciclo de feedback.&lt;/p&gt;
&lt;p&gt;Combine isso com algo como Playwright CLI, e seu agente pode realmente &lt;em&gt;usar&lt;/em&gt; sua app — clicando nos fluxos, checando o DOM, vendo coisas quebradas na telemetria, consertando o código, reiniciando e testando de novo. Construir, executar, observar, consertar. Esse é o ciclo de desenvolvimento autônomo que estávamos perseguindo.&lt;/p&gt;
&lt;h2 id="primeiros-passos"&gt;Primeiros passos&lt;/h2&gt;
&lt;p&gt;Novo no Aspire? Instale a CLI em &lt;a href="https://get.aspire.dev"&gt;get.aspire.dev&lt;/a&gt; e siga o &lt;a href="https://aspire.dev/get-started/first-app"&gt;guia de início&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Já usa Aspire? Execute &lt;code&gt;aspire update --self&lt;/code&gt; para obter a 13.2, depois aponte seu agente de código favorito para seu repo. Você pode se surpreender com o quanto mais longe ele chega com os guardrails do Aspire.&lt;/p&gt;
&lt;h2 id="concluindo"&gt;Concluindo&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 não é mais apenas um framework para apps distribuídas — está se tornando infraestrutura essencial para agentes. Definições de stack estruturadas, inicialização com um comando, execuções paralelas isoladas e telemetria em tempo real dão aos agentes de IA exatamente o que precisam para ir de escrever código a entregar apps.&lt;/p&gt;
&lt;p&gt;Leia o &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;post completo&lt;/a&gt; do time do Aspire para todos os detalhes e vídeos de demonstração.&lt;/p&gt;</content:encoded></item><item><title>O Modo Isolado do Aspire Resolve o Pesadelo de Conflitos de Porta no Desenvolvimento Paralelo</title><link>https://thedotnetblog.com/pt/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/pt/news/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/</guid><description>Aspire 13.2 introduz o modo --isolated: portas aleatórias, segredos separados e zero colisões ao executar múltiplas instâncias do mesmo AppHost. Perfeito para agentes de IA, worktrees e fluxos de trabalho paralelos.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post foi traduzido automaticamente. Para a versão original, &lt;a href="https://thedotnetblog.com/pt/news/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Se você já tentou executar duas instâncias do mesmo projeto ao mesmo tempo, conhece a dor. A porta 8080 já está em uso. A porta 17370 está ocupada. Matar algo, reiniciar, fazer malabarismo com variáveis de ambiente — é um assassino de produtividade.&lt;/p&gt;
&lt;p&gt;Esse problema está piorando, não melhorando. Agentes de IA criam git worktrees para trabalhar de forma independente. Agentes em segundo plano criam ambientes separados. Desenvolvedores fazem checkout do mesmo repo duas vezes para branches de funcionalidades. Cada um desses cenários bate na mesma parede: duas instâncias da mesma app brigando pelas mesmas portas.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 resolve isso com um único flag. James Newton-King do time do Aspire &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;escreveu todos os detalhes&lt;/a&gt;, e é uma daquelas funcionalidades &amp;ldquo;por que não tínhamos isso antes?&amp;rdquo;&lt;/p&gt;
&lt;h2 id="a-solução---isolated"&gt;A solução: &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;Isso é tudo. Cada execução recebe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Portas aleatórias&lt;/strong&gt; — sem mais colisões entre instâncias&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Segredos de usuário isolados&lt;/strong&gt; — connection strings e chaves API ficam separadas por instância&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sem reatribuição manual de portas. Sem malabarismo de variáveis de ambiente. Cada execução recebe um ambiente limpo e livre de colisões automaticamente.&lt;/p&gt;
&lt;h2 id="cenários-reais-onde-isso-brilha"&gt;Cenários reais onde isso brilha&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Múltiplos checkouts.&lt;/strong&gt; Você tem uma branch de funcionalidade em um diretório e um bugfix em outro:&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;Ambos rodam sem conflitos. O dashboard mostra o que está rodando e onde.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agentes em segundo plano no VS Code.&lt;/strong&gt; Quando o agente em background do Copilot Chat cria um git worktree para trabalhar no seu código de forma independente, ele pode precisar executar seu AppHost do Aspire. Sem &lt;code&gt;--isolated&lt;/code&gt;, isso é uma colisão de porta com seu worktree principal. Com ele, ambas instâncias simplesmente funcionam.&lt;/p&gt;
&lt;p&gt;O skill do Aspire que vem com &lt;code&gt;aspire agent init&lt;/code&gt; instrui automaticamente os agentes a usar &lt;code&gt;--isolated&lt;/code&gt; quando trabalhando em worktrees. Então o agente em background do Copilot deve lidar com isso nativamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Testes de integração junto ao desenvolvimento.&lt;/strong&gt; Precisa rodar testes contra um AppHost ao vivo enquanto continua construindo funcionalidades? O modo isolado dá a cada contexto suas próprias portas e configuração.&lt;/p&gt;
&lt;h2 id="como-funciona-internamente"&gt;Como funciona internamente&lt;/h2&gt;
&lt;p&gt;Quando você passa &lt;code&gt;--isolated&lt;/code&gt;, a CLI gera um ID de instância único para a execução. Isso aciona dois comportamentos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Randomização de portas&lt;/strong&gt; — em vez de vincular a portas previsíveis definidas na configuração do seu AppHost, o modo isolado escolhe portas aleatórias disponíveis para tudo — o dashboard, endpoints de serviço, tudo. O service discovery se ajusta automaticamente, então os serviços se encontram independentemente de quais portas foram atribuídas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Isolamento de segredos&lt;/strong&gt; — cada execução isolada recebe seu próprio armazenamento de user secrets, indexado pelo ID da instância. Connection strings e chaves API de uma execução não vazam para outra.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Seu código não precisa de mudanças. O service discovery do Aspire resolve endpoints em tempo de execução, então tudo se conecta corretamente independentemente da atribuição de portas.&lt;/p&gt;
&lt;h2 id="quando-usar"&gt;Quando usar&lt;/h2&gt;
&lt;p&gt;Use &lt;code&gt;--isolated&lt;/code&gt; quando executar múltiplas instâncias do mesmo AppHost simultaneamente — seja desenvolvimento paralelo, testes automatizados, agentes de IA ou git worktrees. Para desenvolvimento de instância única onde você prefere portas previsíveis, o &lt;code&gt;aspire run&lt;/code&gt; regular continua funcionando bem.&lt;/p&gt;
&lt;h2 id="concluindo"&gt;Concluindo&lt;/h2&gt;
&lt;p&gt;O modo isolado é uma funcionalidade pequena que resolve um problema real e cada vez mais comum. À medida que o desenvolvimento assistido por IA nos empurra para mais fluxos paralelos — múltiplos agentes, múltiplos worktrees, múltiplos contextos — a capacidade de simplesmente subir outra instância sem brigar por portas é essencial.&lt;/p&gt;
&lt;p&gt;Leia o &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;post completo&lt;/a&gt; para todos os detalhes técnicos e experimente com &lt;code&gt;aspire update --self&lt;/code&gt; para obter a 13.2.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2 traz uma CLI de documentação — e seu agente de IA também pode usá-la</title><link>https://thedotnetblog.com/pt/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/pt/news/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</guid><description>.NET Aspire 13.2 adiciona aspire docs — uma CLI para pesquisar, navegar e ler documentação oficial sem sair do terminal. Também funciona como ferramenta para agentes de IA. Veja por que isso importa.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post foi traduzido automaticamente. Para a versão original, &lt;a href="https://thedotnetblog.com/pt/news/emiliano-montesdeoca/aspire-docs-cli-ai-skills/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Você conhece aquele momento quando está mergulhado num Aspire AppHost, conectando integrações, e precisa verificar exatamente quais parâmetros a integração Redis espera? Você faz alt-tab pro navegador, procura pelo aspire.dev, aperta os olhos nos docs da API, e volta pro seu editor. Contexto perdido. Flow quebrado.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 acabou de &lt;a href="https://devblogs.microsoft.com/aspire/aspire-docs-in-your-terminal/"&gt;lançar uma solução pra isso&lt;/a&gt;. A CLI &lt;code&gt;aspire docs&lt;/code&gt; permite que você pesquise, navegue e leia documentação oficial do Aspire diretamente do seu terminal. E como é respaldada por serviços reutilizáveis, agentes de IA e skills podem usar os mesmos comandos para consultar docs em vez de alucinar APIs que não existem.&lt;/p&gt;
&lt;h2 id="o-problema-que-isso-realmente-resolve"&gt;O problema que isso realmente resolve&lt;/h2&gt;
&lt;p&gt;David Pine acerta em cheio no post original: agentes de IA eram &lt;em&gt;terríveis&lt;/em&gt; em ajudar desenvolvedores a construir apps com Aspire. Recomendavam &lt;code&gt;dotnet run&lt;/code&gt; em vez de &lt;code&gt;aspire run&lt;/code&gt;, referenciavam learn.microsoft.com para docs que vivem no aspire.dev, sugeriam pacotes NuGet desatualizados, e — meu favorito pessoal — alucinavam APIs que não existem.&lt;/p&gt;
&lt;p&gt;Por quê? Porque Aspire foi específico de .NET por muito mais tempo do que é poliglota, e os LLMs trabalham com dados de treinamento que antecedem os recursos mais recentes. Quando você dá a um agente de IA a capacidade de consultar os docs atuais, ele para de adivinhar e começa a ser útil.&lt;/p&gt;
&lt;h2 id="três-comandos-zero-abas-do-navegador"&gt;Três comandos, zero abas do navegador&lt;/h2&gt;
&lt;p&gt;A CLI é refrescantemente simples:&lt;/p&gt;
&lt;h3 id="listar-todos-os-docs"&gt;Listar todos os docs&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;Retorna cada página de documentação disponível no aspire.dev. Precisa de saída legível por máquina? Adicione &lt;code&gt;--format Json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="pesquisar-um-tópico"&gt;Pesquisar um tópico&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;Pesquisa tanto em títulos quanto em conteúdo com pontuação de relevância ponderada. O mesmo motor de busca que alimenta a ferramenta de documentação internamente. Você obtém resultados ranqueados com títulos, slugs e scores de relevância.&lt;/p&gt;
&lt;h3 id="ler-uma-página-inteira-ou-apenas-uma-seção"&gt;Ler uma página inteira (ou apenas uma seção)&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;Transmite a página completa como markdown pro seu terminal. Precisa de apenas uma seção?&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;Precisão cirúrgica. Sem rolar por 500 linhas. Só a parte que você precisa.&lt;/p&gt;
&lt;h2 id="o-ângulo-do-agente-de-ia"&gt;O ângulo do agente de IA&lt;/h2&gt;
&lt;p&gt;Aqui é onde fica interessante pra nós desenvolvedores que construímos com ferramentas de IA. Os mesmos comandos &lt;code&gt;aspire docs&lt;/code&gt; funcionam como ferramentas para agentes de IA — através de skills, servidores MCP, ou wrappers simples de CLI.&lt;/p&gt;
&lt;p&gt;Em vez do seu assistente de IA inventar APIs do Aspire baseadas em dados de treinamento desatualizados, ele pode chamar &lt;code&gt;aspire docs search &amp;quot;postgres&amp;quot;&lt;/code&gt;, encontrar os docs oficiais de integração, ler a página certa, e te dar a abordagem documentada. Documentação em tempo real e atualizada — não o que o modelo memorizou seis meses atrás.&lt;/p&gt;
&lt;p&gt;A arquitetura por trás disso é intencional. O time do Aspire construiu serviços reutilizáveis (&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;) em vez de uma integração pontual. Isso significa que o mesmo motor de busca funciona para humanos no terminal, agentes de IA no seu editor, e automação no seu pipeline de CI.&lt;/p&gt;
&lt;h2 id="cenários-do-mundo-real"&gt;Cenários do mundo real&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Consultas rápidas no terminal:&lt;/strong&gt; Você está três arquivos de profundidade e precisa dos parâmetros de configuração do Redis. Dois comandos, noventa segundos, de volta ao trabalho:&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;Desenvolvimento assistido por IA:&lt;/strong&gt; Seu skill do VS Code encapsula os comandos da CLI. Você pergunta &amp;ldquo;Adicione um banco de dados PostgreSQL ao meu AppHost&amp;rdquo; e o agente consulta os docs reais antes de responder. Sem alucinações.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Validação CI/CD:&lt;/strong&gt; Seu pipeline valida configurações de AppHost contra documentação oficial programaticamente. A saída &lt;code&gt;--format Json&lt;/code&gt; conecta-se limpo com &lt;code&gt;jq&lt;/code&gt; e outras ferramentas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bases de conhecimento personalizadas:&lt;/strong&gt; Construindo suas próprias ferramentas de IA? Envie a saída JSON estruturada direto pra sua base de conhecimento:&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;Sem web scraping. Sem chaves de API. Os mesmos dados estruturados que a ferramenta de documentação usa internamente.&lt;/p&gt;
&lt;h2 id="a-documentação-está-sempre-atualizada"&gt;A documentação está sempre atualizada&lt;/h2&gt;
&lt;p&gt;Esta é a parte que mais aprecio. A CLI não baixa um snapshot — ela consulta o aspire.dev com cache baseado em ETag. No momento em que os docs são atualizados, sua CLI e qualquer skill construído sobre ela reflete isso. Sem cópias desatualizadas, sem momentos de &amp;ldquo;mas o wiki dizia&amp;hellip;&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="pra-fechar"&gt;Pra fechar&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;aspire docs&lt;/code&gt; é uma daquelas funcionalidades pequenas que resolve um problema real de forma limpa. Humanos ganham acesso à documentação direto no terminal. Agentes de IA ganham uma forma de parar de adivinhar e começar a referenciar docs reais. E tudo é sustentado pela mesma fonte de verdade.&lt;/p&gt;
&lt;p&gt;Se você está construindo com .NET Aspire e ainda não experimentou a CLI, execute &lt;code&gt;aspire docs search &amp;quot;seu-topico-aqui&amp;quot;&lt;/code&gt; e veja como é. Depois considere envolver esses comandos em qualquer skill de IA ou configuração de automação que está usando — seus agentes vão agradecer.&lt;/p&gt;
&lt;p&gt;Confira o &lt;a href="https://davidpine.dev/posts/aspire-docs-mcp-tools/"&gt;mergulho profundo de David Pine&lt;/a&gt; sobre como a ferramenta de documentação foi construída, e a &lt;a href="https://aspire.dev/reference/cli/commands/aspire-docs/"&gt;referência oficial da CLI&lt;/a&gt; para todos os detalhes.&lt;/p&gt;</content:encoded></item><item><title>O Dashboard do Aspire 13.2 agora tem uma API de telemetria — e isso muda tudo</title><link>https://thedotnetblog.com/pt/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/pt/news/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/</guid><description>.NET Aspire 13.2 traz exportação inteligente de telemetria, uma API programática para traces e logs, e melhorias na visualização GenAI. Veja por que isso importa para o seu workflow de depuração.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post foi traduzido automaticamente. Para a versão original, &lt;a href="https://thedotnetblog.com/pt/news/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Se você tem desenvolvido aplicações distribuídas com .NET Aspire, já sabe que o dashboard é a melhor coisa de toda a experiência. Todos os seus traces, logs e métricas em um só lugar — sem Jaeger externo, sem configuração de Seq, sem momentos de &amp;ldquo;deixa eu verificar o outro terminal&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;O Aspire 13.2 acabou de melhorar tudo significativamente. James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-dashboard-improvements-export-and-telemetry/"&gt;anunciou a atualização&lt;/a&gt;, e honestamente? Os recursos de exportação de telemetria e a API sozinhos justificam o upgrade.&lt;/p&gt;
&lt;h2 id="exportar-telemetria-de-forma-civilizada"&gt;Exportar telemetria de forma civilizada&lt;/h2&gt;
&lt;p&gt;Aqui está o cenário que todos já vivemos: você está depurando um problema distribuído, finalmente reproduz depois de vinte minutos de configuração, e agora precisa compartilhar o que aconteceu com o time. Antes? Screenshots. Copiar e colar IDs de traces. A bagunça de sempre.&lt;/p&gt;
&lt;p&gt;O Aspire 13.2 adiciona um diálogo de &lt;strong&gt;Gerenciar logs e telemetria&lt;/strong&gt; onde você pode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Limpar toda a telemetria (útil antes de tentar reproduzir)&lt;/li&gt;
&lt;li&gt;Exportar telemetria selecionada em um arquivo ZIP no formato padrão OTLP/JSON&lt;/li&gt;
&lt;li&gt;Reimportar esse ZIP em qualquer dashboard Aspire depois&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esse último ponto é o recurso matador. Você reproduz um bug, exporta a telemetria, anexa ao seu work item, e seu colega pode importar no próprio dashboard para ver exatamente o que você viu. Acabou o &amp;ldquo;consegue reproduzir na sua máquina?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Traces, spans e logs individuais também têm uma opção &amp;ldquo;Export JSON&amp;rdquo; nos menus de contexto. Precisa compartilhar um trace específico? Clique direito, copiar JSON, colar na descrição do PR. Pronto.&lt;/p&gt;
&lt;h2 id="a-api-de-telemetria-é-o-verdadeiro-divisor-de-águas"&gt;A API de telemetria é o verdadeiro divisor de águas&lt;/h2&gt;
&lt;p&gt;Isso é o que mais me empolga. O dashboard agora expõe uma API HTTP em &lt;code&gt;/api/telemetry&lt;/code&gt; para consultar dados de telemetria programaticamente. Endpoints disponíveis:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/resources&lt;/code&gt; — listar recursos com telemetria&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/spans&lt;/code&gt; — consultar spans com filtros&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/logs&lt;/code&gt; — consultar logs com filtros&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/traces&lt;/code&gt; — listar traces&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/traces/{traceId}&lt;/code&gt; — obter todos os spans de um trace específico&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tudo retorna no formato OTLP JSON. Isso alimenta os novos comandos CLI &lt;code&gt;aspire agent mcp&lt;/code&gt; e &lt;code&gt;aspire otel&lt;/code&gt;, mas a implicação real é maior: agora você pode construir ferramentas, scripts e integrações com agentes de IA que consultam a telemetria da sua app diretamente.&lt;/p&gt;
&lt;p&gt;Imagine um agente de IA que pode ver seus traces distribuídos reais enquanto você depura. Isso não é mais hipotético — é o que esta API possibilita.&lt;/p&gt;
&lt;h2 id="telemetria-genai-fica-prática"&gt;Telemetria GenAI fica prática&lt;/h2&gt;
&lt;p&gt;Se você está construindo apps com IA usando Semantic Kernel ou Microsoft.Extensions.AI, vai gostar do visualizador de telemetria GenAI melhorado. O Aspire 13.2 adiciona:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Descrições de ferramentas IA renderizadas como Markdown&lt;/li&gt;
&lt;li&gt;Um botão dedicado de GenAI na página de traces para acesso rápido&lt;/li&gt;
&lt;li&gt;Melhor tratamento de erros para JSON de GenAI truncado ou não padrão&lt;/li&gt;
&lt;li&gt;Navegação click-to-highlight entre definições de ferramentas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;O post menciona que VS Code Copilot chat, Copilot CLI e OpenCode suportam configurar um &lt;code&gt;OTEL_EXPORTER_OTLP_ENDPOINT&lt;/code&gt;. Aponte-os para o dashboard Aspire e você pode literalmente assistir seus agentes IA pensando em tempo real pela telemetria. Essa é uma experiência de depuração que você não encontra em nenhum outro lugar.&lt;/p&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;O Aspire 13.2 transforma o dashboard de &amp;ldquo;UI bonita de depuração&amp;rdquo; para &amp;ldquo;plataforma de observabilidade programável&amp;rdquo;. O workflow de exportação/importação sozinho economiza tempo real na depuração distribuída, e a API de telemetria abre a porta para diagnósticos assistidos por IA.&lt;/p&gt;
&lt;p&gt;Se você já usa Aspire, atualize. Se não — esta é uma boa razão para conhecer &lt;a href="https://aspire.dev"&gt;aspire.dev&lt;/a&gt;.&lt;/p&gt;</content:encoded></item></channel></rss>