<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Cli | The .NET Blog</title><link>https://thedotnetblog.com/pt/tags/cli/</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>Wed, 27 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/pt/tags/cli/index.xml" rel="self" type="application/rss+xml"/><item><title>dotnet new WinUI: Criar apps Windows sem tocar no Visual Studio</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/dotnet-new-winui-templates-cli-vscode/</link><pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/dotnet-new-winui-templates-cli-vscode/</guid><description>Os templates de projeto WinUI agora funcionam com dotnet new — apps em branco, padrões NavigationView e mais. Suporte a VS Code, sem necessidade do Visual Studio, com Fluent Design por padrão.</description><content:encoded>&lt;p&gt;O desenvolvimento com WinUI costumava exigir o Visual Studio. Isso está a mudar: a Microsoft publicou templates de projetos e itens open source para WinUI que funcionam com &lt;code&gt;dotnet new&lt;/code&gt;, trazendo o desenvolvimento de apps Windows para o fluxo de trabalho padrão da CLI.&lt;/p&gt;
&lt;h2 id="começar-em-três-comandos"&gt;Começar em três comandos&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Instalar os templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotnet new install Microsoft.WindowsAppSDK.WinUI.CSharp.Templates
&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;# Criar uma app NavigationView&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotnet new winui-navview -n MyApp
&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;# Executar&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; MyApp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotnet run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sem Visual Studio, sem configuração manual do projeto. A app executa com &lt;code&gt;dotnet run&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="o-que-está-incluído"&gt;O que está incluído&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Template em branco&lt;/strong&gt; (&lt;code&gt;dotnet new winui&lt;/code&gt;) — um ponto de partida moderno com uma barra de título Fluent já configurada, ícone de app atualizado com asset &lt;code&gt;.ico&lt;/code&gt;, e valores padrão corretos para modo claro/escuro. Melhor do que o antigo template em branco que te deixava a configurar o básico sozinho.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Template NavigationView&lt;/strong&gt; (&lt;code&gt;dotnet new winui-navview&lt;/code&gt;) — o padrão de navegação master-detail, totalmente configurado com um NavigationView, barra de título moderna e estrutura de navegação multipágina. Segue a silhueta padrão de apps Windows para aplicações baseadas em navegação. Se estás a construir algo com navegação lateral, começa aqui.&lt;/p&gt;
&lt;p&gt;Ambos os templates seguem as &lt;a href="https://learn.microsoft.com/windows/apps/design/basics/app-silhouette"&gt;silhuetas de apps Windows&lt;/a&gt; — padrões modernos de Fluent Design para layout, navegação e estrutura visual — prontos a usar desde o início.&lt;/p&gt;
&lt;h2 id="por-que-importa-para-developers-que-não-usam-visual-studio"&gt;Por que importa para developers que não usam Visual Studio&lt;/h2&gt;
&lt;p&gt;Os developers WinUI que usam VS Code, Rider ou ferramentas de linha de comandos têm sido negligenciados. Os templates existentes do Visual Studio não eram utilizáveis fora do VS — era preciso recriar manualmente a estrutura do projeto e configurar o básico.&lt;/p&gt;
&lt;p&gt;Estes templates são open source (ver &lt;a href="https://github.com/microsoft/WindowsAppSDK/pull/6407"&gt;WindowsAppSDK PR #6407&lt;/a&gt;), desenvolvidos a partir do &lt;a href="https://github.com/microsoft/microsoft-ui-xaml/issues/10388"&gt;feedback da comunidade&lt;/a&gt;, e disponíveis agora. O suporte ao Visual Studio está a ser desenvolvido — estes mesmos templates funcionarão também lá eventualmente.&lt;/p&gt;
&lt;p&gt;Para equipas que querem automatizar a configuração dos seus projetos WinUI, integrá-la em CI, ou simplesmente usar um editor diferente do Visual Studio, isto é uma melhoria significativa.&lt;/p&gt;
&lt;p&gt;Post original: &lt;a href="https://devblogs.microsoft.com/ifdef-windows/introducing-dotnet-new-templates-for-winui/"&gt;Introducing dotnet new WinUI templates&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Cosmos DB Shell Está em Pré-visualização Pública — E Tem um Servidor MCP Integrado</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/cosmosdb-shell-public-preview-mcp-server-cli/</link><pubDate>Sun, 24 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/cosmosdb-shell-public-preview-mcp-server-cli/</guid><description>Azure Cosmos DB Shell é uma nova CLI de código aberto que expõe comandos do banco de dados como ferramentas MCP. Seus agentes de IA podem navegar por containers, executar consultas e gerenciar dados usando a mesma interface que você usa.</description><content:encoded>&lt;p&gt;Se você já teve que alternar entre uma guia do portal, um exemplo de SDK e um script pela metade apenas para responder uma pergunta sobre Cosmos DB, já conhece a fricção que este projeto foi projetado para eliminar.&lt;/p&gt;
&lt;p&gt;Azure Cosmos DB Shell acabou de entrar em pré-visualização pública. É uma CLI de código aberto com sintaxe semelhante ao bash e — a parte que o torna interessante — um servidor MCP integrado.&lt;/p&gt;
&lt;h2 id="o-que-o-torna-diferente-de-outras-clis-de-banco-de-dados"&gt;O Que o Torna Diferente de Outras CLIs de Banco de Dados&lt;/h2&gt;
&lt;p&gt;A CLI em si é útil: comandos familiares, suporte a scripts, integração CI/CD. Essa parte é o mínimo esperado para uma ferramenta de banco de dados voltada para desenvolvedores.&lt;/p&gt;
&lt;p&gt;A parte interessante é a integração do servidor MCP. Cada comando que a CLI expõe fica disponível como uma ferramenta MCP que seus agentes de IA podem chamar. Não há camada de API personalizada, nenhum código de integração para escrever. Seu agente pode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Navegar por hierarquias de banco de dados com &lt;code&gt;cd&lt;/code&gt;, &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;pwd&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Executar consultas SQL com &lt;code&gt;query&lt;/code&gt; e obter resultados estruturados&lt;/li&gt;
&lt;li&gt;Criar e modificar itens com &lt;code&gt;create item&lt;/code&gt;, &lt;code&gt;update&lt;/code&gt;, &lt;code&gt;rm&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Gerenciar bancos de dados e containers com &lt;code&gt;mkdb&lt;/code&gt;, &lt;code&gt;mkcon&lt;/code&gt;, &lt;code&gt;rmdb&lt;/code&gt;, &lt;code&gt;rmcon&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Inspecionar o contexto atual com &lt;code&gt;endpoint&lt;/code&gt;, &lt;code&gt;pwd&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A mudança chave: seu agente não está falando com uma API do Cosmos DB — está falando com a mesma interface de shell que você usa. Os comandos são determinísticos, auditáveis e de código aberto para que você possa inspecionar exatamente o que está acontecendo.&lt;/p&gt;
&lt;h2 id="a-base-de-código-aberto-importa"&gt;A Base de Código Aberto Importa&lt;/h2&gt;
&lt;p&gt;Isso não é um serviço gerenciado de caixa preta. O shell é de código aberto, o que significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Equipes de segurança podem auditar a implementação&lt;/li&gt;
&lt;li&gt;Equipes de plataforma podem fazer fork e estendê-lo para seus padrões específicos&lt;/li&gt;
&lt;li&gt;Desenvolvedores podem contribuir com melhorias que beneficiam todos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para equipes empresariais adotando ferramentas de IA, &amp;ldquo;podemos ver exatamente como funciona&amp;rdquo; é cada vez menos um requisito opcional. O código aberto aqui é um diferencial significativo.&lt;/p&gt;
&lt;h2 id="três-cenários-que-se-tornam-mais-fáceis"&gt;Três Cenários Que se Tornam Mais Fáceis&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Análise inteligente de dados&lt;/strong&gt; — conecte um agente ao shell, faça perguntas em linguagem natural, obtenha resultados de consultas estruturados. O agente cuida da construção da consulta; o shell cuida da execução.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gerenciamento autônomo de dados&lt;/strong&gt; — fluxos de trabalho que precisam criar, atualizar ou remover dados no Cosmos DB podem fazer isso através das ferramentas MCP sem precisar de uma integração personalizada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Monitoramento e alertas em tempo real&lt;/strong&gt; — um agente pode consultar containers periodicamente, comparar resultados e apresentar anomalias através do canal de notificação que fizer sentido.&lt;/p&gt;
&lt;p&gt;A interface MCP torna esses cenários combináveis com qualquer plataforma de IA que fale MCP — não apenas as ferramentas da Microsoft.&lt;/p&gt;
&lt;h2 id="para-começar"&gt;Para Começar&lt;/h2&gt;
&lt;p&gt;O shell está em pré-visualização pública. Instale-o, configure sua conexão com o Cosmos DB e habilite o servidor MCP. A partir daí, qualquer host de agente compatível com MCP pode descobrir e usar as ferramentas.&lt;/p&gt;
&lt;p&gt;Post original: &lt;a href="https://devblogs.microsoft.com/cosmosdb/azure-cosmos-db-shell-public-preview-ai-mcp-cli/"&gt;Announcing the Public Preview of Azure Cosmos DB Shell: Open-Source Power Meets AI-Driven Database Automation&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Windows App Dev CLI v0.3: F5 a partir do terminal e automação de UI para agentes</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/</guid><description>Windows App Development CLI v0.3 traz winapp run para lançamentos debug a partir do terminal, winapp ui para automação de interface e um novo pacote NuGet que faz o dotnet run funcionar com apps empacotadas.</description><content:encoded>&lt;p&gt;&lt;em&gt;Esta publicação foi traduzida automaticamente. Para a versão original, &lt;a href="https://thedotnetblog.com/pt/news/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A experiência F5 do Visual Studio é fantástica. Mas ter que abrir o VS só para lançar e depurar uma app Windows empacotada é demais — seja num pipeline de CI, num workflow automatizado, ou quando um agente de IA está fazendo os testes.&lt;/p&gt;
&lt;p&gt;Windows App Development CLI v0.3 acabou de ser &lt;a href="https://devblogs.microsoft.com/ifdef-windows/windows-app-development-cli-v0-3-new-run-and-ui-commands-plus-dotnet-run-support-for-packaged-apps/"&gt;lançada&lt;/a&gt; e aborda isso diretamente com dois recursos principais: &lt;code&gt;winapp run&lt;/code&gt; e &lt;code&gt;winapp ui&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="winapp-run-f5-a-partir-de-qualquer-lugar"&gt;winapp run: F5 a partir de qualquer lugar&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;winapp run&lt;/code&gt; recebe uma pasta de app não empacotada e um manifesto, e faz tudo que o VS faz num debug launch: registra um pacote loose, lança a app e preserva o &lt;code&gt;LocalState&lt;/code&gt; entre re-deploys.&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;# Compilar a app e então executá-la como app empacotada&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winapp run ./bin/Debug
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Funciona para WinUI, WPF, WinForms, Console, Avalonia e mais. Os modos são pensados para desenvolvedores e workflows automatizados:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--detach&lt;/code&gt;&lt;/strong&gt;: Lança e devolve o controle ao terminal imediatamente. Perfeito para CI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--unregister-on-exit&lt;/code&gt;&lt;/strong&gt;: Limpa o pacote registrado ao fechar a app.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--debug-output&lt;/code&gt;&lt;/strong&gt;: Captura mensagens &lt;code&gt;OutputDebugString&lt;/code&gt; e exceções em tempo real.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="novo-pacote-nuget-dotnet-run-para-apps-empacotadas"&gt;Novo pacote NuGet: dotnet run para apps empacotadas&lt;/h2&gt;
&lt;p&gt;Para desenvolvedores .NET há um novo pacote NuGet: &lt;code&gt;Microsoft.Windows.SDK.BuildTools.WinApp&lt;/code&gt;. Após a instalação, &lt;code&gt;dotnet run&lt;/code&gt; cuida de todo o inner loop: build, preparar um pacote loose-layout, registrar no Windows e lançar — tudo em uma etapa.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winapp init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ou&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotnet add package Microsoft.Windows.SDK.BuildTools.WinApp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="winapp-ui-ui-automation-a-partir-da-linha-de-comando"&gt;winapp ui: UI Automation a partir da linha de comando&lt;/h2&gt;
&lt;p&gt;Este é o recurso que abre os cenários agênticos. &lt;code&gt;winapp ui&lt;/code&gt; fornece acesso completo de UI Automation a qualquer app Windows em execução — WPF, WinForms, Win32, Electron, WinUI3 — diretamente do terminal.&lt;/p&gt;
&lt;p&gt;O que é possível fazer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Listar todas as janelas de nível superior&lt;/li&gt;
&lt;li&gt;Navegar pela árvore completa de UI Automation de uma janela&lt;/li&gt;
&lt;li&gt;Procurar elementos por nome, tipo ou ID de automação&lt;/li&gt;
&lt;li&gt;Clicar, invocar e definir valores&lt;/li&gt;
&lt;li&gt;Tirar screenshots&lt;/li&gt;
&lt;li&gt;Aguardar o aparecimento de elementos — ideal para sincronização de testes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Combinar &lt;code&gt;winapp ui&lt;/code&gt; com &lt;code&gt;winapp run&lt;/code&gt; cria um workflow completo build → lançar → verificar a partir do terminal. Um agente pode executar a app, inspecionar o estado da UI e validar o resultado.&lt;/p&gt;
&lt;h2 id="outras-novidades"&gt;Outras novidades&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp unregister&lt;/code&gt;&lt;/strong&gt;: Remove um pacote sideloaded quando terminar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp manifest add-alias&lt;/code&gt;&lt;/strong&gt;: Adiciona um alias para lançar a app por nome a partir do terminal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tab completion&lt;/strong&gt;: Configure o completamento PowerShell com um único comando.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="como-obter"&gt;Como obter&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winget install Microsoft.WinAppCli
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ou&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g @microsoft/winappcli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A CLI está em preview pública. O &lt;a href="https://github.com/microsoft/WinAppCli"&gt;repositório no GitHub&lt;/a&gt; tem a documentação completa e o &lt;a href="https://devblogs.microsoft.com/ifdef-windows/windows-app-development-cli-v0-3-new-run-and-ui-commands-plus-dotnet-run-support-for-packaged-apps/"&gt;anúncio original&lt;/a&gt; tem todos os detalhes.&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>azd update — Um único comando para todos os seus gerenciadores de pacotes</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azd-update-universal-upgrade-command/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azd-update-universal-upgrade-command/</guid><description>O Azure Developer CLI agora tem um comando de atualização universal que funciona independentemente de como você o instalou — winget, Homebrew, Chocolatey ou script de instalaçã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/azd-update-universal-upgrade-command/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sabe aquela mensagem &amp;ldquo;Uma nova versão do azd está disponível&amp;rdquo; que aparece a cada poucas semanas? Aquela que você ignora porque não lembra se instalou o &lt;code&gt;azd&lt;/code&gt; via winget, Homebrew ou aquele script curl que rodou há seis meses? Pois é, isso finalmente foi resolvido.&lt;/p&gt;
&lt;p&gt;A Microsoft acabou de lançar o &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;&lt;code&gt;azd update&lt;/code&gt;&lt;/a&gt; — um único comando que atualiza o Azure Developer CLI para a versão mais recente, independentemente de como você o instalou originalmente. Windows, macOS, Linux — não importa. Um comando só.&lt;/p&gt;
&lt;h2 id="como-funciona"&gt;Como funciona&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;É isso. Se você quer acesso antecipado a novas funcionalidades, pode mudar para o build diário de insiders:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd update --channel daily
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd update --channel stable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;O comando detecta seu método de instalação atual e usa o mecanismo de atualização apropriado por baixo dos panos. Chega de &amp;ldquo;espera, eu usei winget ou choco nessa máquina?&amp;rdquo;&lt;/p&gt;
&lt;h2 id="o-pequeno-detalhe"&gt;O pequeno detalhe&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd update&lt;/code&gt; está disponível a partir da versão 1.23.x. Se você está em uma versão anterior, vai precisar fazer uma última atualização manual usando seu método de instalação original. Depois disso, o &lt;code&gt;azd update&lt;/code&gt; cuida de tudo dali em diante.&lt;/p&gt;
&lt;p&gt;Verifique sua versão atual com &lt;code&gt;azd version&lt;/code&gt;. Se precisar de uma instalação do zero, a &lt;a href="https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd"&gt;documentação de instalação&lt;/a&gt; te ajuda.&lt;/p&gt;
&lt;h2 id="por-que-isso-importa"&gt;Por que isso importa&lt;/h2&gt;
&lt;p&gt;É uma pequena melhoria de qualidade de vida, mas para quem usa &lt;code&gt;azd&lt;/code&gt; diariamente para fazer deploy de agentes de IA e apps Aspire no Azure, estar atualizado significa menos momentos de &amp;ldquo;esse bug já tinha sido corrigido na última versão&amp;rdquo;. Uma coisa a menos para se preocupar.&lt;/p&gt;
&lt;p&gt;Leia o &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;anúncio completo&lt;/a&gt; e a &lt;a href="https://blog.jongallant.com/2026/04/azd-update"&gt;análise mais detalhada&lt;/a&gt; do Jon Gallant para mais contexto.&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></channel></rss>