<?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>Developer Tools | The .NET Blog</title><link>https://thedotnetblog.com/pt/tags/developer-tools/</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>Fri, 15 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/pt/tags/developer-tools/index.xml" rel="self" type="application/rss+xml"/><item><title>VS Code 1.119: OpenTelemetry para Sessões de Agentes, Integração do Navegador e Segurança</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/visual-studio-code-1-119-highlights/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/visual-studio-code-1-119-highlights/</guid><description>VS Code 1.119 (maio de 2026) adiciona rastreamento OpenTelemetry para sessões de agentes, compartilhamento de abas do navegador, melhorias de confiança e segurança, e um patch de segurança 1.119.1.</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/visual-studio-code-1-119-highlights/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://code.visualstudio.com/updates/v1_119"&gt;VS Code 1.119&lt;/a&gt; foi lançado em 6 de maio de 2026 (com um patch de segurança 1.119.1 logo em seguida). O lançamento se concentra em observabilidade de agentes, interação com o navegador e redução de interrupções.&lt;/p&gt;
&lt;h2 id="rastreamento-opentelemetry-para-sessões-de-agentes"&gt;Rastreamento OpenTelemetry para sessões de agentes&lt;/h2&gt;
&lt;p&gt;Este é o recurso de destaque para quem executa agentes em produção ou depura fluxos de trabalho agênticos. Ative com duas configurações:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;github.copilot.chat.otel.enabled&amp;#34;&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;github.copilot.chat.otel.otlpEndpoint&amp;#34;&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;http://localhost:4318&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Os rastros seguem as convenções semânticas GenAI. Cada solicitação do agente produz um span raiz &lt;code&gt;invoke_agent&lt;/code&gt; com spans filho aninhados: &lt;code&gt;chat&lt;/code&gt;, &lt;code&gt;execute_tool&lt;/code&gt; e &lt;code&gt;execute_hook&lt;/code&gt;. O uso de tokens é relatado por solicitação — incluindo contagens de leitura e criação de cache.&lt;/p&gt;
&lt;p&gt;Funciona com o agente local, o agente em segundo plano do Copilot CLI e o agente Claude. Qualquer backend compatível com OTLP aceita os rastros — o &lt;a href="https://learn.microsoft.com/en-us/dotnet/aspire/fundamentals/dashboard/standalone"&gt;Aspire Dashboard standalone&lt;/a&gt; funciona bem para desenvolvimento local.&lt;/p&gt;
&lt;h2 id="agentes-agora-podem-acessar-abas-do-navegador"&gt;Agentes agora podem acessar abas do navegador&lt;/h2&gt;
&lt;p&gt;Os agentes podem solicitar acesso às abas do navegador integrado — mas não é automático. Você deve compartilhar explicitamente uma aba via seletor de contexto, arrastar e soltar, ou contexto sugerido. Há um botão de compartilhamento no navegador para revogar o acesso. Quando um agente tenta abrir uma nova aba no mesmo domínio que uma aba já aberta (não compartilhada), o VS Code solicita que você reutilize a aba existente.&lt;/p&gt;
&lt;h2 id="uso-otimizado-de-tokens"&gt;Uso otimizado de tokens&lt;/h2&gt;
&lt;p&gt;Um modelo leve experimental agora gerencia as listas de tarefas dos agentes, mantendo esse trabalho administrativo longe do modelo principal mais caro. Reduz o consumo de tokens para tarefas que não precisam de capacidade completa de raciocínio.&lt;/p&gt;
&lt;h2 id="confiança-e-segurança"&gt;Confiança e segurança&lt;/h2&gt;
&lt;p&gt;Menos interrupções: VS Code 1.119 reduz solicitações de acesso à rede e gravações em pastas temporárias por agentes. O patch 1.119.1 resolve problemas de segurança específicos — vale a pena atualizar se ainda não o fez.&lt;/p&gt;
&lt;h2 id="troca-rápida-para-pré-visualização-markdown"&gt;Troca rápida para pré-visualização Markdown&lt;/h2&gt;
&lt;p&gt;Pequeno mas útil: agora você pode trocar rapidamente o editor atual para a pré-visualização Markdown sem navegar.&lt;/p&gt;
&lt;h2 id="vs-code-agents-pré-visualização-insiders"&gt;VS Code Agents (pré-visualização Insiders)&lt;/h2&gt;
&lt;p&gt;A interface de sessão de agentes redesenhada — novo seletor de repositórios (local/repos/remoto), melhorias de subsessões, refinamento web e mobile, animações de progresso — está disponível no Insiders em &lt;a href="https://insiders.vscode.dev/agents"&gt;insiders.vscode.dev/agents&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Changelog completo: &lt;a href="https://code.visualstudio.com/updates/v1_119"&gt;code.visualstudio.com/updates/v1_119&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Azure Data Studio foi descontinuado: migre seu fluxo de Azure SQL para o VS Code</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azure-data-studio-retired-move-to-vscode-sql/</link><pubDate>Sat, 09 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azure-data-studio-retired-move-to-vscode-sql/</guid><description>Azure Data Studio foi descontinuado em 6 de fevereiro de 2025, com suporte até 28 de fevereiro de 2026. Aqui está o caminho de migração completo para o VS Code com a extensão MSSQL.</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/azure-data-studio-retired-move-to-vscode-sql/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/azure-sql/azure-data-studio-is-retired-move-your-azure-sql-workflow-to-vs-code-in-10-minutes/"&gt;Azure Data Studio foi descontinuado em 6 de fevereiro de 2025&lt;/a&gt;, com suporte até 28 de fevereiro de 2026 — o substituto recomendado é o VS Code com a extensão MSSQL.&lt;/p&gt;
&lt;h2 id="o-que-instalar"&gt;O que instalar&lt;/h2&gt;
&lt;p&gt;Três itens para começar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extensão MSSQL&lt;/strong&gt; — pesquise &amp;ldquo;SQL Server (mssql)&amp;rdquo; no Marketplace do VS Code&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extensão SQL Database Projects&lt;/strong&gt; — esquema como código, validação de build, publicação guiada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;.NET 8 SDK&lt;/strong&gt; — exigido pelo sistema de build; SDK ausente é o problema mais comum no primeiro uso&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="migrar-suas-conexões-e-configurações-do-ads"&gt;Migrar suas conexões e configurações do ADS&lt;/h2&gt;
&lt;p&gt;A extensão MSSQL inclui o &lt;strong&gt;ADS Migration Toolkit&lt;/strong&gt;, que gerencia a migração única em um fluxo guiado: conexões salvas, grupos de conexões, configurações e atalhos de teclado são importados automaticamente.&lt;/p&gt;
&lt;h2 id="recuperar-a-memória-muscular-do-f5"&gt;Recuperar a memória muscular do F5&lt;/h2&gt;
&lt;p&gt;Os usuários do ADS dependem do F5 para executar consultas. Instale a extensão &lt;strong&gt;MSSQL Database Management Keymap&lt;/strong&gt; para recuperar os atalhos de teclado no estilo ADS, incluindo o F5.&lt;/p&gt;
&lt;h2 id="sql-database-projects-esquema-como-código"&gt;SQL Database Projects: esquema como código&lt;/h2&gt;
&lt;p&gt;Clique com o botão direito em um projeto → &lt;strong&gt;Publicar&lt;/strong&gt; → configurar destino → revisar o script T-SQL gerado → implantar. A visualização prévia do script antes da implantação é o principal recurso de segurança. Os modelos de itens geram stubs para tabelas, stored procedures e views — o mesmo fluxo do SSDT.&lt;/p&gt;
&lt;p&gt;Problema comum: uma &lt;strong&gt;incompatibilidade de plataforma de destino&lt;/strong&gt; no arquivo &lt;code&gt;.sqlproj&lt;/code&gt; causará erros de build se o projeto foi criado para uma versão diferente do SQL Server.&lt;/p&gt;
&lt;h2 id="schema-compare-e-schema-designer"&gt;Schema Compare e Schema Designer&lt;/h2&gt;
&lt;p&gt;A extensão também inclui &lt;strong&gt;Schema Compare&lt;/strong&gt; (diff entre seu projeto e o banco de dados implantado) e &lt;strong&gt;Schema Designer&lt;/strong&gt; (edição visual do esquema sem escrever DDL manualmente).&lt;/p&gt;
&lt;h2 id="desenvolvedores-do-microsoft-fabric"&gt;Desenvolvedores do Microsoft Fabric&lt;/h2&gt;
&lt;p&gt;A configuração é idêntica, mas comece pelo &lt;strong&gt;portal do Fabric&lt;/strong&gt; e conecte o banco de dados ao Git primeiro antes de abri-lo no VS Code. A Microsoft tem um guia dedicado: &lt;em&gt;Azure Data Studio to VS Code — What it means for SQL database in Fabric developers&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;A migração é um fluxo guiado de uma única vez, não uma reconstrução manual. Instale as três ferramentas, execute o ADS Migration Toolkit, restaure seus atalhos de teclado e você estará de volta ao normal em menos de 10 minutos.&lt;/p&gt;
&lt;p&gt;Consulte o &lt;a href="https://devblogs.microsoft.com/azure-sql/azure-data-studio-is-retired-move-your-azure-sql-workflow-to-vs-code-in-10-minutes/"&gt;artigo completo&lt;/a&gt; para capturas de tela passo a passo e o tutorial específico do Fabric.&lt;/p&gt;</content:encoded></item><item><title>O Azure MCP Server Agora é um .mcpb — Instale-o sem Nenhum Runtime</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/</link><pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/</guid><description>O Azure MCP Server está disponível como MCP Bundle (.mcpb) — baixe, arraste para o Claude Desktop e pronto. Sem Node.js, Python ou .NET necessários.</description><content:encoded>&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/azure-mcp-server-mcpb-no-runtime-install/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Sabe o que era chato na configuração de servidores MCP? Você precisava de um runtime. Node.js para a versão npm, Python para pip/uvx, .NET SDK para a variante dotnet.&lt;/p&gt;
&lt;p&gt;O &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-mcp-server-mcpb-support/"&gt;Azure MCP Server acabou de mudar isso&lt;/a&gt;. Agora está disponível como &lt;code&gt;.mcpb&lt;/code&gt; — um MCP Bundle — e a configuração é arrastar e soltar.&lt;/p&gt;
&lt;h2 id="o-que-é-um-mcp-bundle"&gt;O que é um MCP Bundle?&lt;/h2&gt;
&lt;p&gt;Pense como uma extensão do VS Code (&lt;code&gt;.vsix&lt;/code&gt;) ou extensão de navegador (&lt;code&gt;.crx&lt;/code&gt;), mas para servidores MCP. Um arquivo &lt;code&gt;.mcpb&lt;/code&gt; é um arquivo ZIP independente que inclui o binário do servidor e todas as suas dependências.&lt;/p&gt;
&lt;h2 id="como-instalar"&gt;Como instalar&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. Baixe o bundle para sua plataforma&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vá para a &lt;a href="https://github.com/microsoft/mcp/releases?q=Azure.Mcp.Server"&gt;página de GitHub Releases&lt;/a&gt; e baixe o arquivo &lt;code&gt;.mcpb&lt;/code&gt; para seu OS e arquitetura.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Instale no Claude Desktop&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;O mais fácil: arraste e solte o arquivo &lt;code&gt;.mcpb&lt;/code&gt; na janela do Claude Desktop na página de configurações de Extensões (&lt;code&gt;☰ → Arquivo → Configurações → Extensões&lt;/code&gt;). Revise os detalhes, clique em Instalar, confirme.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Autentique no Azure&lt;/strong&gt;&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;az login
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Só isso. O Azure MCP Server usa suas credenciais Azure existentes.&lt;/p&gt;
&lt;h2 id="o-que-você-pode-fazer"&gt;O que você pode fazer&lt;/h2&gt;
&lt;p&gt;Mais de 100 ferramentas de serviços Azure diretamente do seu cliente IA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Consultar e gerenciar Cosmos DB, Storage, Key Vault, App Service, Foundry&lt;/li&gt;
&lt;li&gt;Gerar comandos &lt;code&gt;az&lt;/code&gt; CLI para qualquer tarefa&lt;/li&gt;
&lt;li&gt;Criar templates Bicep e Terraform&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="para-começar"&gt;Para começar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Download&lt;/strong&gt;: &lt;a href="https://github.com/microsoft/mcp/releases?q=Azure.Mcp.Server-"&gt;GitHub Releases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Repositório&lt;/strong&gt;: &lt;a href="https://aka.ms/azmcp"&gt;aka.ms/azmcp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docs&lt;/strong&gt;: &lt;a href="https://aka.ms/azmcp/docs"&gt;aka.ms/azmcp/docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Veja o &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-mcp-server-mcpb-support/"&gt;post completo&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.118: Copilot CLI Ganha Nomes de Sessão, Badges de Modelo e TypeScript 7.0 Nightly</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/vscode-1-118-copilot-cli-session-names-model-badge/</link><pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/vscode-1-118-copilot-cli-session-names-model-badge/</guid><description>Visual Studio Code 1.118 é um release focado em melhorias do Copilot CLI — nomes de sessão, badges de modelo, seleção automática de modelo e opt-in para TypeScript 7.0 Nightly.</description><content:encoded>&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/vscode-1-118-copilot-cli-session-names-model-badge/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://code.visualstudio.com/updates/v1_118"&gt;Visual Studio Code 1.118&lt;/a&gt; é um release menor e focado — principalmente refinamentos do Copilot CLI — mas há algumas coisas que merecem atenção.&lt;/p&gt;
&lt;h2 id="copilot-cli-sessões-têm-nomes-reais"&gt;Copilot CLI: sessões têm nomes reais&lt;/h2&gt;
&lt;p&gt;As APIs de título de sessão do SDK do Copilot CLI agora são a fonte da verdade para nomes de sessão. Sessões mostram o nome real do SDK em vez de etiquetas geradas automaticamente.&lt;/p&gt;
&lt;h2 id="troque-de-sessão-mais-rápido"&gt;Troque de sessão mais rápido&lt;/h2&gt;
&lt;p&gt;O app Agents agora tem &lt;code&gt;Ctrl+1&lt;/code&gt;, &lt;code&gt;Ctrl+2&lt;/code&gt;, etc. para trocar rapidamente entre sessões.&lt;/p&gt;
&lt;h2 id="badges-de-modelo-no-chat"&gt;Badges de modelo no chat&lt;/h2&gt;
&lt;p&gt;Respostas do Copilot CLI no painel de chat agora mostram um badge de modelo — você pode ver de relance qual modelo tratou cada requisição.&lt;/p&gt;
&lt;h2 id="seleção-automática-de-modelo-no-copilot-cli"&gt;Seleção automática de modelo no Copilot CLI&lt;/h2&gt;
&lt;p&gt;A seleção automática de modelo agora funciona também no agente Copilot CLI.&lt;/p&gt;
&lt;h2 id="opt-in-para-typescript-70-nightly"&gt;Opt-in para TypeScript 7.0 Nightly&lt;/h2&gt;
&lt;p&gt;Você pode agora optar por testar os nightlies do TypeScript 7.0 diretamente nas configurações do VS Code. TypeScript 7.0 é um release importante (a &lt;a href="https://devblogs.microsoft.com/typescript/announcing-typescript-7-0-beta/"&gt;beta foi lançada há alguns dias&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Veja as &lt;a href="https://code.visualstudio.com/updates/v1_118"&gt;notas de release completas&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Foundry Toolboxes: Um único endpoint para todas as ferramentas dos seus agentes</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/</guid><description>A Microsoft Foundry lançou Toolboxes em preview pública — uma forma de curar, gerenciar e expor ferramentas de agentes IA por meio de um único endpoint compatível com MCP.</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/foundry-toolboxes-curate-manage-tools-ai-agents/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Aqui está um problema que parece chato até você vivenciá-lo: sua organização está construindo múltiplos agentes IA, cada um precisa de ferramentas, e cada time as configura do zero. A mesma integração de busca web, a mesma config do Azure AI Search, a mesma conexão com o servidor MCP do GitHub — mas em outro repositório, por outro time, com outras credenciais e sem governança compartilhada.&lt;/p&gt;
&lt;p&gt;A Microsoft Foundry acabou de lançar &lt;a href="https://devblogs.microsoft.com/foundry/introducing-toolboxes-in-foundry/"&gt;Toolboxes&lt;/a&gt; em preview pública, e é uma resposta direta a esse problema.&lt;/p&gt;
&lt;h2 id="o-que-é-um-toolbox"&gt;O que é um Toolbox?&lt;/h2&gt;
&lt;p&gt;Um Toolbox é um bundle de ferramentas nomeado e reutilizável, definido uma vez no Foundry e exposto por meio de um único endpoint compatível com MCP. Qualquer runtime de agente que fale MCP pode consumi-lo — sem lock-in no Foundry Agents.&lt;/p&gt;
&lt;p&gt;A proposta é simples: &lt;strong&gt;build once, consume anywhere&lt;/strong&gt;. Defina as ferramentas, configure a autenticação de forma centralizada (OAuth passthrough, identidade gerenciada do Entra), publique o endpoint. Cada agente que precisar dessas ferramentas se conecta ao endpoint e as obtém todas.&lt;/p&gt;
&lt;h2 id="os-quatro-pilares-dois-disponíveis-hoje"&gt;Os quatro pilares (dois disponíveis hoje)&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pilar&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;O que faz&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Discover&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Em breve&lt;/td&gt;
&lt;td&gt;Encontra ferramentas aprovadas sem busca manual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Build&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Disponível&lt;/td&gt;
&lt;td&gt;Agrupa ferramentas em um bundle reutilizável&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Consume&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Disponível&lt;/td&gt;
&lt;td&gt;Um endpoint MCP único expõe todas as ferramentas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Govern&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Em breve&lt;/td&gt;
&lt;td&gt;Auth centralizada + observabilidade em todas as chamadas&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="exemplo-prático"&gt;Exemplo prático&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;azure.identity&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;DefaultAzureCredential&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;azure.ai.projects&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AIProjectClient&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&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="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AIProjectClient&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="n"&gt;endpoint&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;FOUNDRY_PROJECT_ENDPOINT&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="n"&gt;credential&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;DefaultAzureCredential&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&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="n"&gt;toolbox_version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;toolboxes&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create_toolbox_version&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="n"&gt;toolbox_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;customer-feedback-triaging-toolbox&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="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Buscar documentação e responder a issues do GitHub.&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="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&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="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;web_search&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Buscar documentação pública&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="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;azure_ai_search&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;index_name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;internal-docs&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="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;mcp_server&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;server_url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://your-github-mcp-server.com&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&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;Após a publicação, o Foundry fornece um endpoint unificado. Uma conexão, todas as ferramentas.&lt;/p&gt;
&lt;h2 id="sem-lock-in-no-foundry-agents"&gt;Sem lock-in no Foundry Agents&lt;/h2&gt;
&lt;p&gt;Os Toolboxes são &lt;strong&gt;criados e gerenciados&lt;/strong&gt; no Foundry, mas a superfície de consumo é o protocolo MCP aberto. Você pode usá-los de agentes personalizados com Microsoft Agent Framework ou LangGraph, GitHub Copilot e outros IDEs compatíveis com MCP.&lt;/p&gt;
&lt;h2 id="por-que-importa-agora"&gt;Por que importa agora&lt;/h2&gt;
&lt;p&gt;A onda multi-agentes está chegando à produção. Cada novo agente é uma nova superfície para configuração duplicada, credenciais desatualizadas e comportamento inconsistente. A base Build + Consume é suficiente para começar a centralizar. Quando o pilar Govern chegar, você terá uma camada de ferramentas observável e controlada centralmente para toda a sua frota de agentes.&lt;/p&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;Ainda é cedo — preview pública, SDK Python primeiro, com Discover e Govern ainda por vir. Mas o modelo é sólido e o design nativo de MCP significa que funciona com as ferramentas que você já está construindo. Confira o &lt;a href="https://devblogs.microsoft.com/foundry/introducing-toolboxes-in-foundry/"&gt;anúncio oficial&lt;/a&gt; para começar.&lt;/p&gt;</content:encoded></item><item><title>Hooks do azd em Python, TypeScript e .NET: chega de scripts shell</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/</guid><description>A CLI do Azure Developer agora suporta hooks em Python, JavaScript, TypeScript e .NET. Sem mais troca de contexto para Bash só para rodar um script de migração.</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/azd-hooks-python-javascript-typescript-dotnet/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Se você já teve um projeto completamente em .NET e mesmo assim precisou escrever scripts Bash para os hooks do azd, conhece bem essa dor. Por que mudar para sintaxe de shell num passo de pré-provisioning quando tudo o mais no projeto é C#?&lt;/p&gt;
&lt;p&gt;Essa frustração agora tem uma solução oficial. A CLI do Azure Developer &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-multi-language-hooks/"&gt;acaba de lançar suporte a múltiplos idiomas para hooks&lt;/a&gt;, e é exatamente tão bom quanto parece.&lt;/p&gt;
&lt;h2 id="hooks-brevemente"&gt;Hooks, brevemente&lt;/h2&gt;
&lt;p&gt;Hooks são scripts que rodam em pontos-chave do ciclo de vida do &lt;code&gt;azd&lt;/code&gt; — antes do provisioning, após o deployment e mais. São definidos no &lt;code&gt;azure.yaml&lt;/code&gt; e permitem injetar lógica customizada sem modificar a CLI.&lt;/p&gt;
&lt;p&gt;Antes, apenas Bash e PowerShell eram suportados. Agora você pode usar &lt;strong&gt;Python, JavaScript, TypeScript ou .NET&lt;/strong&gt; — e o &lt;code&gt;azd&lt;/code&gt; cuida do resto automaticamente.&lt;/p&gt;
&lt;h2 id="como-funciona-a-detecção"&gt;Como funciona a detecção&lt;/h2&gt;
&lt;p&gt;Basta apontar o hook para um arquivo e o &lt;code&gt;azd&lt;/code&gt; infere o idioma pela extensão:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;hooks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;preprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/setup.py&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;postdeploy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/seed.ts&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;postprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/migrate.cs&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sem configuração extra. Se a extensão for ambígua, você pode adicionar &lt;code&gt;kind: python&lt;/code&gt; (ou o que for) para especificar explicitamente.&lt;/p&gt;
&lt;h2 id="detalhes-por-linguagem"&gt;Detalhes por linguagem&lt;/h2&gt;
&lt;h3 id="python"&gt;Python&lt;/h3&gt;
&lt;p&gt;Coloque um &lt;code&gt;requirements.txt&lt;/code&gt; ou &lt;code&gt;pyproject.toml&lt;/code&gt; ao lado do script (ou em um diretório pai). O &lt;code&gt;azd&lt;/code&gt; cria automaticamente um ambiente virtual, instala dependências e executa o script.&lt;/p&gt;
&lt;h3 id="javascript-e-typescript"&gt;JavaScript e TypeScript&lt;/h3&gt;
&lt;p&gt;Mesmo padrão — coloque um &lt;code&gt;package.json&lt;/code&gt; perto do script e o &lt;code&gt;azd&lt;/code&gt; executará &lt;code&gt;npm install&lt;/code&gt; primeiro. Para TypeScript, usa &lt;code&gt;npx tsx&lt;/code&gt; sem etapa de compilação e sem &lt;code&gt;tsconfig.json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="net"&gt;.NET&lt;/h3&gt;
&lt;p&gt;Dois modos disponíveis:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modo projeto&lt;/strong&gt;: Se houver um &lt;code&gt;.csproj&lt;/code&gt; ao lado do script, o &lt;code&gt;azd&lt;/code&gt; executa &lt;code&gt;dotnet restore&lt;/code&gt; e &lt;code&gt;dotnet build&lt;/code&gt; automaticamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modo single-file&lt;/strong&gt;: No .NET 10+, arquivos &lt;code&gt;.cs&lt;/code&gt; independentes executam diretamente via &lt;code&gt;dotnet run script.cs&lt;/code&gt;. Sem arquivo de projeto.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="configuração-por-executor"&gt;Configuração por executor&lt;/h2&gt;
&lt;p&gt;Cada linguagem suporta um bloco &lt;code&gt;config&lt;/code&gt; opcional:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;hooks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;preprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/setup.ts&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;packageManager&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pnpm&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;postprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/migrate.cs&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Release&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;framework&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;net10.0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="por-que-isso-importa-para-desenvolvedores-net"&gt;Por que isso importa para desenvolvedores .NET&lt;/h2&gt;
&lt;p&gt;Os hooks eram o último lugar num projeto baseado em azd que forçava uma troca de linguagem. Agora todo o pipeline de deployment pode viver em um único idioma. Você pode reutilizar utilitários .NET existentes em hooks, referenciar bibliotecas compartilhadas e abandonar a manutenção de scripts shell.&lt;/p&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;Um desses mudanças que parecem pequenas, mas que removem muita fricção do dia a dia com azd. O suporte multi-linguagem para hooks já está disponível — confira o &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-multi-language-hooks/"&gt;post oficial&lt;/a&gt; para a documentação completa.&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>VS Code 1.117: Os Agentes Estão Ganhando Suas Próprias Branches Git e Eu Tô Adorando</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/vscode-1-117-agents-autopilot-worktrees/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/vscode-1-117-agents-autopilot-worktrees/</guid><description>VS Code 1.117 traz isolamento com worktree para sessões de agentes, modo Autopilot persistente e suporte a subagentes. O fluxo de trabalho com agentes de código ficou muito mais real.</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/vscode-1-117-agents-autopilot-worktrees/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A linha entre &amp;ldquo;assistente de IA&amp;rdquo; e &amp;ldquo;colega de equipe de IA&amp;rdquo; continua ficando mais fina. O VS Code 1.117 acabou de sair e as &lt;a href="https://code.visualstudio.com/updates/v1_117"&gt;notas de versão completas&lt;/a&gt; estão recheadas, mas a história é clara: os agentes estão se tornando cidadãos de primeira classe no seu fluxo de trabalho de desenvolvimento.&lt;/p&gt;
&lt;p&gt;Aqui está o que realmente importa.&lt;/p&gt;
&lt;h2 id="o-modo-autopilot-finalmente-lembra-sua-preferência"&gt;O modo Autopilot finalmente lembra sua preferência&lt;/h2&gt;
&lt;p&gt;Antes, você tinha que reativar o Autopilot toda vez que iniciava uma nova sessão. Irritante. Agora seu modo de permissão persiste entre sessões, e você pode configurar o padrão.&lt;/p&gt;
&lt;p&gt;O Agent Host suporta três configurações de sessão:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Default&lt;/strong&gt; — as ferramentas pedem confirmação antes de executar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bypass&lt;/strong&gt; — aprova tudo automaticamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autopilot&lt;/strong&gt; — totalmente autônomo, responde suas próprias perguntas e segue em frente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Se você está montando um novo projeto .NET com migrations, Docker e CI — configure para Autopilot uma vez e esqueça. Essa preferência fica salva.&lt;/p&gt;
&lt;h2 id="worktree-e-isolamento-git-para-sessões-de-agentes"&gt;Worktree e isolamento git para sessões de agentes&lt;/h2&gt;
&lt;p&gt;Essa é a grande novidade. Sessões de agentes agora suportam isolamento completo com worktree e git. Isso significa que quando um agente trabalha em uma tarefa, ele ganha sua própria branch e diretório de trabalho. Sua branch principal fica intocada.&lt;/p&gt;
&lt;p&gt;Melhor ainda — o Copilot CLI gera nomes de branch significativos para essas sessões de worktree. Chega de &lt;code&gt;agent-session-abc123&lt;/code&gt;. Você recebe algo que realmente descreve o que o agente está fazendo.&lt;/p&gt;
&lt;p&gt;Para desenvolvedores .NET que gerenciam múltiplas branches de features ou corrigem bugs enquanto uma tarefa longa de scaffolding roda, isso é um divisor de águas. Você pode ter um agente construindo seus controllers de API em um worktree enquanto você depura um problema na camada de serviços em outro. Sem conflitos. Sem stashing. Sem bagunça.&lt;/p&gt;
&lt;h2 id="subagentes-e-equipes-de-agentes"&gt;Subagentes e equipes de agentes&lt;/h2&gt;
&lt;p&gt;O Agent Host Protocol agora suporta subagentes. Um agente pode criar outros agentes para lidar com partes de uma tarefa. Pense nisso como delegar — seu agente principal coordena, e agentes especializados cuidam das partes.&lt;/p&gt;
&lt;p&gt;Isso é cedo, mas o potencial para fluxos de trabalho .NET é óbvio. Imagine um agente cuidando das suas migrations do EF Core enquanto outro configura seus testes de integração. Ainda não chegamos totalmente lá, mas o suporte ao protocolo chegando agora significa que as ferramentas virão rápido.&lt;/p&gt;
&lt;h2 id="saída-do-terminal-incluída-automaticamente-quando-agentes-enviam-input"&gt;Saída do terminal incluída automaticamente quando agentes enviam input&lt;/h2&gt;
&lt;p&gt;Pequeno mas significativo. Quando um agente envia input para o terminal, a saída do terminal agora é automaticamente incluída no contexto. Antes, o agente precisava de um turno extra só para ler o que aconteceu.&lt;/p&gt;
&lt;p&gt;Se você já viu um agente executar &lt;code&gt;dotnet build&lt;/code&gt;, falhar, e depois precisar de mais uma ida e volta só para ver o erro — essa fricção acabou. Ele vê a saída imediatamente e reage.&lt;/p&gt;
&lt;h2 id="o-app-agents-no-macos-se-atualiza-sozinho"&gt;O app Agents no macOS se atualiza sozinho&lt;/h2&gt;
&lt;p&gt;O app independente Agents no macOS agora se atualiza sozinho. Chega de baixar novas versões manualmente. Ele simplesmente se mantém atualizado.&lt;/p&gt;
&lt;h2 id="as-coisas-menores-que-vale-a-pena-saber"&gt;As coisas menores que vale a pena saber&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Os &lt;strong&gt;hovers do package.json&lt;/strong&gt; agora mostram tanto a versão instalada quanto a última disponível. Útil se você gerencia ferramentas npm junto com seus projetos .NET.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Imagens em comentários JSDoc&lt;/strong&gt; são renderizadas corretamente em hovers e completions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sessões do Copilot CLI&lt;/strong&gt; agora indicam se foram criadas pelo VS Code ou externamente — prático quando você está pulando entre terminais.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copilot CLI, Claude Code e Gemini CLI&lt;/strong&gt; são reconhecidos como tipos de shell. O editor sabe o que você está executando.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="a-conclusão"&gt;A conclusão&lt;/h2&gt;
&lt;p&gt;VS Code 1.117 não é um despejo de features chamativas. É infraestrutura. Isolamento com worktree, permissões persistentes, protocolos de subagentes — esses são os blocos de construção para um fluxo de trabalho onde agentes lidam com tarefas reais e paralelas sem pisar no seu código.&lt;/p&gt;
&lt;p&gt;Se você está construindo com .NET e ainda não mergulhou no fluxo de trabalho com agentes, honestamente, agora é a hora de começar.&lt;/p&gt;</content:encoded></item><item><title>Docker Sandbox permite que agentes do Copilot refatorem seu código sem colocar sua máquina em risco</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/</guid><description>Docker Sandbox dá aos agentes do GitHub Copilot uma microVM segura para refatorar livremente — sem prompts de permissão, sem risco para o host. Veja por que isso muda tudo para modernização .NET em larga escala.</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/copilot-docker-sandbox-agentic-refactoring/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Se você já usou o modo agente do Copilot para algo além de edições pequenas, conhece a dor. Cada escrita de arquivo, cada comando no terminal — mais um prompt de permissão. Agora imagina isso em 50 projetos. Nada divertido.&lt;/p&gt;
&lt;p&gt;O time do Azure acabou de publicar um post sobre &lt;a href="https://devblogs.microsoft.com/all-things-azure/best-of-both-worlds-for-agentic-refactoring-github-copilot-microvms-via-docker-sandbox/"&gt;Docker Sandbox para agentes do GitHub Copilot&lt;/a&gt;, e honestamente, essa é uma das melhorias mais práticas que eu já vi em ferramentas agênticas. Usa microVMs para dar ao Copilot um ambiente completamente isolado onde ele pode fazer de tudo — instalar pacotes, rodar builds, executar testes — sem tocar no seu sistema host.&lt;/p&gt;
&lt;h2 id="o-que-o-docker-sandbox-realmente-te-oferece"&gt;O que o Docker Sandbox realmente te oferece&lt;/h2&gt;
&lt;p&gt;A ideia central é simples: subir uma microVM leve com um ambiente Linux completo, sincronizar seu workspace para dentro dela, e deixar o agente do Copilot operar livremente lá dentro. Quando termina, as mudanças são sincronizadas de volta.&lt;/p&gt;
&lt;p&gt;Eis o que faz isso ser mais do que simplesmente &amp;ldquo;rodar coisas num container&amp;rdquo;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sincronização bidirecional do workspace&lt;/strong&gt; que preserva caminhos absolutos. A estrutura do seu projeto fica idêntica dentro do sandbox. Sem falhas de build por causa de caminhos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker daemon privado&lt;/strong&gt; rodando dentro da microVM. O agente pode construir e rodar containers sem nunca montar o socket Docker do seu host. Isso é muito importante para segurança.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proxies de filtragem HTTP/HTTPS&lt;/strong&gt; que controlam o que o agente pode acessar na rede. Você decide quais registries e endpoints são permitidos. Ataques à cadeia de suprimentos por um &lt;code&gt;npm install&lt;/code&gt; malicioso dentro do sandbox? Bloqueados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modo YOLO&lt;/strong&gt; — sim, é assim que eles chamam. O agente roda sem prompts de permissão porque literalmente não consegue danificar seu host. Toda ação destrutiva está contida.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="por-que-desenvolvedores-net-deveriam-se-importar"&gt;Por que desenvolvedores .NET deveriam se importar&lt;/h2&gt;
&lt;p&gt;Pense no trabalho de modernização que tantos times estão enfrentando agora. Você tem uma solução .NET Framework com 30 projetos e precisa migrá-la para .NET 9. São centenas de alterações de arquivos — arquivos de projeto, atualizações de namespaces, substituições de API, migrações de NuGet.&lt;/p&gt;
&lt;p&gt;Com Docker Sandbox, você pode apontar um agente do Copilot para um projeto, deixá-lo refatorar livremente dentro da microVM, rodar &lt;code&gt;dotnet build&lt;/code&gt; e &lt;code&gt;dotnet test&lt;/code&gt; para validar, e só aceitar as mudanças que realmente funcionam. Sem risco dele acidentalmente destruir seu ambiente de desenvolvimento local enquanto experimenta.&lt;/p&gt;
&lt;p&gt;O post também descreve rodar uma &lt;strong&gt;frota de agentes em paralelo&lt;/strong&gt; — cada um no seu próprio sandbox — trabalhando em diferentes projetos simultaneamente. Para soluções .NET grandes ou arquiteturas de microsserviços, isso economiza uma quantidade enorme de tempo. Um agente por serviço, todos rodando isolados, todos validados independentemente.&lt;/p&gt;
&lt;h2 id="o-ângulo-da-segurança-importa"&gt;O ângulo da segurança importa&lt;/h2&gt;
&lt;p&gt;Aqui está o que a maioria das pessoas ignora: quando você deixa um agente de IA executar comandos arbitrários, está confiando a ele toda a sua máquina. Docker Sandbox inverte esse modelo. O agente recebe autonomia total dentro de um ambiente descartável. O proxy de rede garante que ele só pode baixar de fontes aprovadas. Seu filesystem host, Docker daemon e credenciais ficam intocados.&lt;/p&gt;
&lt;p&gt;Para times com requisitos de compliance — e isso é a maioria das empresas .NET — essa é a diferença entre &amp;ldquo;não podemos usar IA agêntica&amp;rdquo; e &amp;ldquo;podemos adotá-la com segurança.&amp;rdquo;&lt;/p&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;Docker Sandbox resolve a tensão fundamental da programação agêntica: agentes precisam de liberdade para serem úteis, mas liberdade na sua máquina host é perigoso. MicroVMs te dão os dois. Se você está planejando qualquer refatoração ou modernização .NET em larga escala, vale a pena configurar isso agora. A combinação da inteligência de código do Copilot com um ambiente de execução seguro é exatamente o que times de produção estavam esperando.&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>As ferramentas Azure MCP agora vêm integradas no Visual Studio 2022 — Sem extensão necessária</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/</guid><description>As ferramentas Azure MCP são distribuídas como parte da carga de trabalho de desenvolvimento Azure no Visual Studio 2022. Mais de 230 ferramentas, 45 serviços Azure, zero extensões para instalar.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este artigo foi traduzido automaticamente. Para a versão original, &lt;a href="https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Se você tem usado as ferramentas Azure MCP no Visual Studio através da extensão separada, já conhece o processo — instalar o VSIX, reiniciar, torcer para não quebrar, gerenciar incompatibilidades de versão. Essa fricção acabou.&lt;/p&gt;
&lt;p&gt;Yun Jung Choi &lt;a href="https://devblogs.microsoft.com/visualstudio/azure-mcp-tools-now-ship-built-into-visual-studio-2022-no-extension-required/"&gt;anunciou&lt;/a&gt; que as ferramentas Azure MCP agora são distribuídas diretamente como parte da carga de trabalho de desenvolvimento Azure no Visual Studio 2022. Sem extensão. Sem VSIX. Sem a dança do reiniciar.&lt;/p&gt;
&lt;h2 id="o-que-isso-realmente-significa"&gt;O que isso realmente significa&lt;/h2&gt;
&lt;p&gt;A partir do Visual Studio 2022 versão 17.14.30, o Azure MCP Server vem incluído na carga de trabalho de desenvolvimento Azure. Se você já tem essa carga de trabalho instalada, basta ativá-lo no GitHub Copilot Chat e pronto.&lt;/p&gt;
&lt;p&gt;Mais de 230 ferramentas em 45 serviços Azure — acessíveis diretamente pela janela de chat. Liste suas contas de armazenamento, faça deploy de uma app ASP.NET Core, diagnostique problemas no App Service, consulte o Log Analytics — tudo sem abrir uma aba do navegador.&lt;/p&gt;
&lt;h2 id="por-que-isso-importa-mais-do-que-parece"&gt;Por que isso importa mais do que parece&lt;/h2&gt;
&lt;p&gt;A questão com ferramentas de desenvolvimento é a seguinte: cada passo extra é fricção, e fricção mata a adoção. Ter o MCP como extensão separada significava incompatibilidades de versão, falhas na instalação e mais uma coisa para manter atualizada. Integrá-lo na carga de trabalho significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Um único caminho de atualização&lt;/strong&gt; pelo Visual Studio Installer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sem divergência de versões&lt;/strong&gt; entre a extensão e a IDE&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sempre atualizado&lt;/strong&gt; — o MCP Server é atualizado com os releases regulares do VS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para equipes que padronizam no Azure, isso é muito relevante. Você instala a carga de trabalho uma vez, ativa as ferramentas, e elas estão lá para cada sessão.&lt;/p&gt;
&lt;h2 id="o-que-você-pode-fazer-com-isso"&gt;O que você pode fazer com isso&lt;/h2&gt;
&lt;p&gt;As ferramentas cobrem todo o ciclo de vida do desenvolvimento através do Copilot Chat:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Aprender&lt;/strong&gt; — pergunte sobre serviços Azure, boas práticas, padrões de arquitetura&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Projetar e desenvolver&lt;/strong&gt; — obtenha recomendações de serviços, configure o código da sua aplicação&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fazer deploy&lt;/strong&gt; — provisione recursos e faça deploy diretamente pela IDE&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solucionar problemas&lt;/strong&gt; — consulte logs, verifique a saúde dos recursos, diagnostique problemas em produção&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Um exemplo rápido — digite isso no Copilot Chat:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;List my storage accounts in my current subscription.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;O Copilot chama as ferramentas Azure MCP por trás dos panos, consulta suas assinaturas e retorna uma lista formatada com nomes, localizações e SKUs. Sem precisar do portal.&lt;/p&gt;
&lt;h2 id="como-ativar"&gt;Como ativar&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Atualize para o Visual Studio 2022 &lt;strong&gt;17.14.30&lt;/strong&gt; ou superior&lt;/li&gt;
&lt;li&gt;Certifique-se de que a carga de trabalho &lt;strong&gt;Azure development&lt;/strong&gt; está instalada&lt;/li&gt;
&lt;li&gt;Abra o GitHub Copilot Chat&lt;/li&gt;
&lt;li&gt;Clique no botão &lt;strong&gt;Select tools&lt;/strong&gt; (o ícone das duas chaves)&lt;/li&gt;
&lt;li&gt;Ative o &lt;strong&gt;Azure MCP Server&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;É isso. Fica ativado entre sessões.&lt;/p&gt;
&lt;h2 id="um-detalhe"&gt;Um detalhe&lt;/h2&gt;
&lt;p&gt;As ferramentas vêm desativadas por padrão — você precisa ativá-las manualmente. E as ferramentas específicas do VS 2026 não estão disponíveis no VS 2022. A disponibilidade das ferramentas também depende das permissões da sua assinatura Azure, assim como no portal.&lt;/p&gt;
&lt;h2 id="o-cenário-geral"&gt;O cenário geral&lt;/h2&gt;
&lt;p&gt;Isso faz parte de uma tendência clara: o MCP está se tornando o padrão para expor ferramentas de nuvem nas IDEs de desenvolvimento. Já vimos o &lt;a href="https://devblogs.microsoft.com/azure-sdk/announcing-azure-mcp-server-2-0-stable-release/"&gt;lançamento estável do Azure MCP Server 2.0&lt;/a&gt; e integrações MCP no VS Code e em outros editores. Tê-lo integrado no sistema de cargas de trabalho do Visual Studio é a evolução natural.&lt;/p&gt;
&lt;p&gt;Para nós desenvolvedores .NET que vivemos no Visual Studio, isso elimina mais um motivo para trocar de contexto para o portal Azure. E sinceramente, quanto menos troca de abas, melhor.&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>Aquela Configuração de Janelas Flutuantes do Visual Studio Que Você Não Conhecia (Mas Deveria)</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/visual-studio-floating-windows-powertoys/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/visual-studio-floating-windows-powertoys/</guid><description>Uma configuração oculta do Visual Studio dá controle total sobre janelas flutuantes — entradas independentes na barra de tarefas, comportamento adequado com múltiplos monitores e integração perfeita com FancyZones. Um dropdown muda tudo.</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/visual-studio-floating-windows-powertoys/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Se você usa múltiplos monitores com o Visual Studio (e honestamente, quem não usa hoje em dia?), provavelmente já passou pela frustração: janelas flutuantes de ferramentas desaparecem quando você minimiza a IDE principal, elas sempre ficam em cima de tudo, e não aparecem como botões separados na barra de tarefas. Funciona para alguns fluxos de trabalho, mas para configurações com múltiplos monitores é frustrante.&lt;/p&gt;
&lt;p&gt;Mads Kristensen da equipe do Visual Studio &lt;a href="https://devblogs.microsoft.com/visualstudio/take-full-control-of-your-floating-windows-in-visual-studio/"&gt;compartilhou uma configuração pouco conhecida&lt;/a&gt; que muda completamente como as janelas flutuantes se comportam. Um dropdown. Só isso.&lt;/p&gt;
&lt;h2 id="a-configuração"&gt;A configuração&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tools &amp;gt; Options &amp;gt; Environment &amp;gt; Windows &amp;gt; Floating Windows&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;O dropdown &amp;ldquo;These floating windows are owned by the main window&amp;rdquo; tem três opções:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;None&lt;/strong&gt; — independência total. Cada janela flutuante tem sua própria entrada na barra de tarefas e se comporta como uma janela normal do Windows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool Windows&lt;/strong&gt; (padrão) — documentos flutuam livremente, janelas de ferramentas ficam vinculadas à IDE.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documents and Tool Windows&lt;/strong&gt; — comportamento clássico do Visual Studio, tudo vinculado à janela principal.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="por-que-none-é-a-melhor-escolha-para-configurações-com-múltiplos-monitores"&gt;Por que &amp;ldquo;None&amp;rdquo; é a melhor escolha para configurações com múltiplos monitores&lt;/h2&gt;
&lt;p&gt;Configure para &lt;strong&gt;None&lt;/strong&gt; e de repente todas as suas janelas flutuantes de ferramentas e documentos se comportam como aplicações reais do Windows. Elas aparecem na barra de tarefas, ficam visíveis quando você minimiza a janela principal do Visual Studio, e param de se forçar para frente de tudo.&lt;/p&gt;
&lt;p&gt;Combine isso com &lt;strong&gt;PowerToys FancyZones&lt;/strong&gt; e é uma mudança total. Crie layouts personalizados nos seus monitores, encaixe seu Gerenciador de Soluções em uma zona, depurador em outra, e arquivos de código onde quiser. Tudo fica no lugar, tudo é acessível de forma independente, e seu espaço de trabalho parece organizado em vez de caótico.&lt;/p&gt;
&lt;h2 id="recomendações-rápidas"&gt;Recomendações rápidas&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Usuários avançados com múltiplos monitores&lt;/strong&gt;: Configure para &lt;strong&gt;None&lt;/strong&gt;, combine com FancyZones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flutuadores ocasionais&lt;/strong&gt;: &lt;strong&gt;Tool Windows&lt;/strong&gt; (padrão) é um bom meio-termo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fluxo de trabalho tradicional&lt;/strong&gt;: &lt;strong&gt;Documents and Tool Windows&lt;/strong&gt; mantém tudo clássico&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dica pro: &lt;strong&gt;Ctrl + duplo clique&lt;/strong&gt; na barra de título de qualquer janela de ferramentas para flutuá-la ou ancorar instantaneamente. Não precisa reiniciar após mudar a configuração.&lt;/p&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;É uma daquelas configurações do tipo &amp;ldquo;não acredito que eu não sabia disso&amp;rdquo;. Se as janelas flutuantes do Visual Studio já te irritaram, vá mudar isso agora mesmo.&lt;/p&gt;
&lt;p&gt;Leia o &lt;a href="https://devblogs.microsoft.com/visualstudio/take-full-control-of-your-floating-windows-in-visual-studio/"&gt;post completo&lt;/a&gt; para detalhes e capturas de tela.&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>VS Code 1.116 — App de Agentes Ganha Navegação por Teclado e Autocompletação de Contexto de Arquivos</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/vscode-1-116-agents-app-updates/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/vscode-1-116-agents-app-updates/</guid><description>VS Code 1.116 foca no polimento da app de Agentes — atalhos de teclado dedicados, melhorias de acessibilidade, autocompletação de contexto de arquivos e resolução de links CSS @import.</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/vscode-1-116-agents-app-updates/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;VS Code 1.116 é a versão de abril de 2026, e embora seja mais leve que algumas atualizações recentes, as mudanças são focadas e significativas — especialmente se você está usando a app de Agentes diariamente.&lt;/p&gt;
&lt;p&gt;Aqui está o que chegou, baseado nas &lt;a href="https://code.visualstudio.com/updates/v1_116"&gt;notas de versão oficiais&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="melhorias-na-app-de-agentes"&gt;Melhorias na app de Agentes&lt;/h2&gt;
&lt;p&gt;A app de Agentes continua amadurecendo com polimento de usabilidade que faz uma diferença real nos fluxos de trabalho diários:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Atalhos de teclado dedicados&lt;/strong&gt; — agora você pode focar a visualização de Mudanças, a árvore de arquivos dentro de Mudanças e a visualização de Personalizações do Chat com comandos e atalhos de teclado dedicados. Se você estava clicando pela app de Agentes para navegar, isso traz fluxos de trabalho totalmente controlados por teclado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diálogo de ajuda de acessibilidade&lt;/strong&gt; — pressionar &lt;code&gt;Alt+F1&lt;/code&gt; na caixa de entrada do chat agora abre um diálogo de ajuda de acessibilidade mostrando comandos e atalhos disponíveis. Usuários de leitores de tela também podem controlar a verbosidade dos anúncios. Boa acessibilidade beneficia a todos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Autocompletação de contexto de arquivos&lt;/strong&gt; — digite &lt;code&gt;#&lt;/code&gt; no chat da app de Agentes para ativar autocompletação de contexto de arquivos no seu workspace atual. Esta é uma daquelas pequenas melhorias de qualidade de vida que aceleram cada interação — chega de digitar caminhos completos de arquivos ao referenciar código.&lt;/p&gt;
&lt;h2 id="resolução-de-links-css-import"&gt;Resolução de links CSS &lt;code&gt;@import&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Uma boa para desenvolvedores frontend: VS Code agora resolve referências CSS &lt;code&gt;@import&lt;/code&gt; que usam caminhos de node_modules. Você pode fazer &lt;code&gt;Ctrl+clique&lt;/code&gt; através de imports como &lt;code&gt;@import &amp;quot;some-module/style.css&amp;quot;&lt;/code&gt; ao usar bundlers. Pequeno, mas elimina um ponto de atrito nos fluxos de trabalho CSS.&lt;/p&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;VS Code 1.116 é sobre refinamento — tornar a app de Agentes mais navegável, mais acessível e mais amigável ao teclado. Se você passa tempo significativo na app de Agentes (e suspeito que muitos de nós passamos), essas mudanças se acumulam.&lt;/p&gt;
&lt;p&gt;Confira as &lt;a href="https://code.visualstudio.com/updates/v1_116"&gt;notas de versão completas&lt;/a&gt; para a lista completa.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.115 — Notificações de Terminal em Segundo Plano, Modo Agente SSH e Mais</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/vscode-1-115-agent-improvements/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/vscode-1-115-agent-improvements/</guid><description>VS Code 1.115 traz notificações de terminal em segundo plano para agentes, hospedagem remota de agentes via SSH, colagem de arquivos em terminais e rastreamento de edições com reconhecimento de sessão. Veja o que importa para desenvolvedores .NET.</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/vscode-1-115-agent-improvements/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;VS Code 1.115 acabou de &lt;a href="https://code.visualstudio.com/updates/v1_115"&gt;ser lançado&lt;/a&gt;, e embora seja uma versão mais leve em termos de funcionalidades principais, as melhorias relacionadas a agentes são genuinamente úteis se você trabalha com assistentes de código com IA diariamente.&lt;/p&gt;
&lt;p&gt;Deixa eu destacar o que realmente vale a pena saber.&lt;/p&gt;
&lt;h2 id="terminais-em-segundo-plano-se-comunicam-com-agentes"&gt;Terminais em segundo plano se comunicam com agentes&lt;/h2&gt;
&lt;p&gt;Essa é a funcionalidade destaque. Terminais em segundo plano agora notificam automaticamente os agentes quando comandos são concluídos, incluindo o código de saída e a saída do terminal. Prompts de entrada em terminais em segundo plano também são detectados e exibidos ao usuário.&lt;/p&gt;
&lt;p&gt;Por que isso importa? Se você usou o modo agente do Copilot para executar comandos de build ou suítes de testes em segundo plano, você conhece a dor do &amp;ldquo;será que já terminou?&amp;rdquo; — terminais em segundo plano eram essencialmente disparar-e-esquecer. Agora o agente é notificado quando seu &lt;code&gt;dotnet build&lt;/code&gt; ou &lt;code&gt;dotnet test&lt;/code&gt; termina, vê a saída e pode reagir de acordo. É uma mudança pequena que torna os fluxos de trabalho orientados por agentes significativamente mais confiáveis.&lt;/p&gt;
&lt;p&gt;Há também uma nova ferramenta &lt;code&gt;send_to_terminal&lt;/code&gt; que permite aos agentes enviar comandos para terminais em segundo plano com confirmação do usuário, corrigindo o problema onde &lt;code&gt;run_in_terminal&lt;/code&gt; com um timeout movia terminais para segundo plano e os deixava somente leitura.&lt;/p&gt;
&lt;h2 id="hospedagem-remota-de-agentes-via-ssh"&gt;Hospedagem remota de agentes via SSH&lt;/h2&gt;
&lt;p&gt;VS Code agora suporta conexão a máquinas remotas via SSH, instalando automaticamente o CLI e iniciando-o em modo host de agentes. Isso significa que suas sessões de agentes de IA podem mirar ambientes remotos diretamente — útil para desenvolvedores .NET que compilam e testam em servidores Linux ou VMs na nuvem.&lt;/p&gt;
&lt;h2 id="rastreamento-de-edições-em-sessões-de-agentes"&gt;Rastreamento de edições em sessões de agentes&lt;/h2&gt;
&lt;p&gt;Edições de arquivos feitas durante sessões de agentes agora são rastreadas e restauradas, com diffs, desfazer/refazer e restauração de estado. Se um agente faz alterações no seu código e algo dá errado, você pode ver exatamente o que mudou e reverter. Tranquilidade para deixar agentes modificarem sua codebase.&lt;/p&gt;
&lt;h2 id="reconhecimento-de-abas-do-navegador-e-outras-melhorias"&gt;Reconhecimento de abas do navegador e outras melhorias&lt;/h2&gt;
&lt;p&gt;Mais algumas adições de qualidade de vida:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rastreamento de abas do navegador&lt;/strong&gt; — o chat agora pode rastrear e linkar abas do navegador abertas durante uma sessão, para que agentes possam referenciar páginas web que você está visualizando&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Colagem de arquivos no terminal&lt;/strong&gt; — cole arquivos (incluindo imagens) no terminal com Ctrl+V, arrastar e soltar, ou clique direito&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cobertura de testes no minimap&lt;/strong&gt; — indicadores de cobertura de testes agora aparecem no minimap para uma visão visual rápida&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pinch-to-zoom no Mac&lt;/strong&gt; — o navegador integrado suporta gestos de pinch-to-zoom&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Direitos do Copilot em Sessões&lt;/strong&gt; — a barra de status mostra informações de uso na visualização de Sessões&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Favicon em Ir para Arquivo&lt;/strong&gt; — páginas web abertas mostram favicons na lista de seleção rápida&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;VS Code 1.115 é uma versão incremental, mas as melhorias de agentes — notificações de terminal em segundo plano, hospedagem de agentes SSH e rastreamento de edições — somam-se a uma experiência notavelmente mais fluida para desenvolvimento assistido por IA. Se você está usando o modo agente do Copilot para projetos .NET, esses são o tipo de melhorias de qualidade de vida que reduzem o atrito no dia a dia.&lt;/p&gt;
&lt;p&gt;Confira as &lt;a href="https://code.visualstudio.com/updates/v1_115"&gt;notas de versão completas&lt;/a&gt; para todos os detalhes.&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>Atualização de março do Visual Studio permite criar agentes Copilot personalizados — e o find_symbol é revolucionário</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/visual-studio-march-2026-custom-copilot-agents/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/visual-studio-march-2026-custom-copilot-agents/</guid><description>A atualização de março 2026 do Visual Studio traz agentes Copilot personalizados, skills reutilizáveis, a ferramenta find_symbol com reconhecimento de linguagem, e profiling com Copilot do Test Explorer.</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/visual-studio-march-2026-custom-copilot-agents/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;O Visual Studio acabou de receber sua atualização Copilot mais significativa. Mark Downie &lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-march-update-build-your-own-custom-agents/"&gt;anunciou a versão de março&lt;/a&gt;, e o destaque são os agentes personalizados — mas honestamente, a ferramenta &lt;code&gt;find_symbol&lt;/code&gt; pode ser a que mais muda seu workflow.&lt;/p&gt;
&lt;h2 id="agentes-copilot-personalizados-no-seu-repo"&gt;Agentes Copilot personalizados no seu repo&lt;/h2&gt;
&lt;p&gt;Quer que o Copilot siga os padrões de código do seu time? Agentes personalizados são definidos como arquivos &lt;code&gt;.agent.md&lt;/code&gt; em &lt;code&gt;.github/agents/&lt;/code&gt;. Cada agente tem acesso completo ao workspace, compreensão de código, ferramentas, seu modelo preferido e conexões MCP.&lt;/p&gt;
&lt;h2 id="agent-skills-pacotes-de-instruções-reutilizáveis"&gt;Agent skills: pacotes de instruções reutilizáveis&lt;/h2&gt;
&lt;p&gt;Skills são carregados automaticamente de &lt;code&gt;.github/skills/&lt;/code&gt; no seu repo ou &lt;code&gt;~/.copilot/skills/&lt;/code&gt; no seu perfil.&lt;/p&gt;
&lt;h2 id="find_symbol-navegação-com-reconhecimento-de-linguagem"&gt;find_symbol: navegação com reconhecimento de linguagem&lt;/h2&gt;
&lt;p&gt;A nova ferramenta &lt;code&gt;find_symbol&lt;/code&gt; dá ao modo agente do Copilot navegação de símbolos baseada em serviços de linguagem. Em vez de buscar texto, o agente pode encontrar todas as referências de um símbolo e acessar informações de tipo e escopo.&lt;/p&gt;
&lt;p&gt;Para desenvolvedores .NET, é uma melhoria enorme — bases de código C# com hierarquias de tipos profundas se beneficiam enormemente.&lt;/p&gt;
&lt;h2 id="perfilar-testes-com-copilot"&gt;Perfilar testes com Copilot&lt;/h2&gt;
&lt;p&gt;Há um novo &lt;strong&gt;Profile with Copilot&lt;/strong&gt; no menu de contexto do Test Explorer. O Profiling Agent executa o teste e analisa performance automaticamente.&lt;/p&gt;
&lt;h2 id="perf-tips-durante-debugging-ao-vivo"&gt;Perf tips durante debugging ao vivo&lt;/h2&gt;
&lt;p&gt;A otimização de performance agora acontece durante o debug. O Visual Studio mostra tempo de execução inline. Linha lenta? Clique no Perf Tip e peça sugestões ao Copilot.&lt;/p&gt;
&lt;h2 id="corrigir-vulnerabilidades-nuget-do-solution-explorer"&gt;Corrigir vulnerabilidades NuGet do Solution Explorer&lt;/h2&gt;
&lt;p&gt;Um link &lt;strong&gt;Fix with GitHub Copilot&lt;/strong&gt; aparece diretamente no Solution Explorer quando uma vulnerabilidade é detectada.&lt;/p&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;Agentes personalizados e skills são o destaque, mas &lt;code&gt;find_symbol&lt;/code&gt; é a joia escondida — muda fundamentalmente a precisão do Copilot ao refatorar código .NET. Baixe o &lt;a href="https://visualstudio.microsoft.com/downloads/"&gt;Visual Studio 2026 Insiders&lt;/a&gt; para experimentar.&lt;/p&gt;</content:encoded></item><item><title>azd agora permite executar e depurar agentes IA localmente — O que mudou em março 2026</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/</guid><description>O Azure Developer CLI lançou sete versões em março 2026. Destaques: loop local de execução e depuração para agentes IA, integração com GitHub Copilot na configuração de projetos, e suporte a Container App Jobs.</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-march-2026-local-ai-agent-debugging/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sete versões em um mês. Foi isso que o time do Azure Developer CLI (&lt;code&gt;azd&lt;/code&gt;) publicou em março 2026, e a funcionalidade principal é a que eu estava esperando: &lt;strong&gt;um loop local de execução e depuração para agentes IA&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;PC Chan &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-march-2026/"&gt;publicou o resumo completo&lt;/a&gt;, e embora haja muito conteúdo, deixe-me filtrar o que realmente importa para desenvolvedores .NET construindo apps com IA.&lt;/p&gt;
&lt;h2 id="executar-e-depurar-agentes-ia-sem-fazer-deploy"&gt;Executar e depurar agentes IA sem fazer deploy&lt;/h2&gt;
&lt;p&gt;Esta é a grande novidade. A nova extensão &lt;code&gt;azure.ai.agents&lt;/code&gt; adiciona comandos que te dão uma experiência de loop interno adequada para agentes IA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;azd ai agent run&lt;/code&gt; — inicia seu agente localmente&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent invoke&lt;/code&gt; — envia mensagens (local ou em produção)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent show&lt;/code&gt; — mostra status e saúde do container&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent monitor&lt;/code&gt; — transmite logs do container em tempo real&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Antes, testar um agente IA significava fazer deploy no Microsoft Foundry toda vez que você fazia uma mudança. Agora você pode iterar localmente, testar o comportamento do seu agente, e só fazer deploy quando estiver pronto.&lt;/p&gt;
&lt;h2 id="github-copilot-configura-seu-projeto-azd"&gt;GitHub Copilot configura seu projeto azd&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd init&lt;/code&gt; agora oferece uma opção &amp;ldquo;Set up with GitHub Copilot (Preview)&amp;rdquo;. Em vez de responder prompts manualmente, um agente Copilot gera a configuração para você. Quando um comando falha, &lt;code&gt;azd&lt;/code&gt; oferece troubleshooting assistido por IA — tudo sem sair do terminal.&lt;/p&gt;
&lt;h2 id="container-app-jobs-e-melhorias-de-deploy"&gt;Container App Jobs e melhorias de deploy&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Container App Jobs&lt;/strong&gt;: &lt;code&gt;azd&lt;/code&gt; agora faz deploy de &lt;code&gt;Microsoft.App/jobs&lt;/code&gt; pela config existente &lt;code&gt;host: containerapp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timeouts configuráveis&lt;/strong&gt;: Nova flag &lt;code&gt;--timeout&lt;/code&gt; no &lt;code&gt;azd deploy&lt;/code&gt; e campo &lt;code&gt;deployTimeout&lt;/code&gt; no &lt;code&gt;azure.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fallback de build remoto&lt;/strong&gt;: Quando o build ACR falha, &lt;code&gt;azd&lt;/code&gt; faz fallback automático para Docker/Podman local.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validação preflight local&lt;/strong&gt;: Parâmetros Bicep são validados localmente antes do deploy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="melhorias-de-dx"&gt;Melhorias de DX&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Detecção automática de pnpm/yarn&lt;/strong&gt; para projetos JS/TS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Suporte a pyproject.toml&lt;/strong&gt; para Python&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diretórios de templates locais&lt;/strong&gt; — &lt;code&gt;azd init --template&lt;/code&gt; aceita caminhos do sistema de arquivos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Melhores mensagens de erro&lt;/strong&gt; no modo &lt;code&gt;--no-prompt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Variáveis de ambiente de build&lt;/strong&gt; injetadas em todos os subprocessos de build (.NET, Node.js, Java, Python)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;O loop de depuração local de agentes IA é a estrela desta versão, mas o acúmulo de melhorias de deploy e refinamento de DX faz o &lt;code&gt;azd&lt;/code&gt; parecer mais maduro do que nunca. Se você está fazendo deploy de apps .NET no Azure — especialmente agentes IA — esta atualização vale a pena.&lt;/p&gt;
&lt;p&gt;Confira as &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-march-2026/"&gt;notas completas da versão&lt;/a&gt; para todos os detalhes.&lt;/p&gt;</content:encoded></item><item><title>Azure DevOps finalmente corrige o editor Markdown que todo mundo reclamava</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azure-devops-markdown-editor-work-items/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/azure-devops-markdown-editor-work-items/</guid><description>O editor Markdown do Azure DevOps para work items ganha uma distinção mais clara entre modo de visualização e edição. Uma mudança pequena que corrige um problema de UX genuinamente irritante.</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/azure-devops-markdown-editor-work-items/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Se você usa Azure Boards, provavelmente já passou por isso: está lendo a descrição de um work item, talvez revisando critérios de aceitação, e acidentalmente dá um duplo clique. Boom — está em modo de edição. Não queria editar nada. Estava apenas lendo.&lt;/p&gt;
&lt;p&gt;Dan Hellem &lt;a href="https://devblogs.microsoft.com/devops/improving-the-markdown-editor-for-work-items/"&gt;anunciou a correção&lt;/a&gt;, e é uma daquelas mudanças que parecem pequenas mas realmente removem fricção do seu fluxo de trabalho diário.&lt;/p&gt;
&lt;h2 id="o-que-mudou"&gt;O que mudou&lt;/h2&gt;
&lt;p&gt;O editor Markdown para campos de texto de work items agora abre em &lt;strong&gt;modo de visualização por padrão&lt;/strong&gt;. Você pode ler e interagir com o conteúdo — seguir links, revisar formatação — sem se preocupar em entrar acidentalmente no modo de edição.&lt;/p&gt;
&lt;p&gt;Quando realmente quer editar, clica no ícone de edição no topo do campo. Quando termina, sai explicitamente para o modo de visualização. Simples, intencional, previsível.&lt;/p&gt;
&lt;h2 id="por-que-isso-importa-mais-do-que-parece"&gt;Por que isso importa mais do que parece&lt;/h2&gt;
&lt;p&gt;O &lt;a href="https://developercommunity.visualstudio.com/t/Markdown-editor-for-work-item-multi-line/10935496"&gt;thread de feedback da comunidade&lt;/a&gt; era longo. O comportamento de duplo clique para editar foi introduzido com o editor Markdown em julho de 2025, e as reclamações começaram quase imediatamente.&lt;/p&gt;
&lt;p&gt;Para times que fazem planejamento de sprint, refinamento de backlog ou revisão de código com Azure Boards, esse tipo de micro-fricção se acumula.&lt;/p&gt;
&lt;h2 id="status-da-implantação"&gt;Status da implantação&lt;/h2&gt;
&lt;p&gt;Já está sendo implementado para um subconjunto de clientes e se expandirá para todos nas próximas duas a três semanas.&lt;/p&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;Nem toda melhoria precisa ser uma funcionalidade de destaque. Às vezes a melhor atualização é simplesmente remover algo irritante. Esta é uma dessas — uma pequena correção de UX que torna o Azure Boards menos hostil para pessoas que só querem ler seus work items em paz.&lt;/p&gt;</content:encoded></item><item><title>Bookmark Studio traz navegação por slots e compartilhamento para marcadores do Visual Studio</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/bookmark-studio-visual-studio-extension/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/bookmark-studio-visual-studio-extension/</guid><description>A nova extensão Bookmark Studio de Mads Kristensen adiciona navegação por slots via teclado, gerenciador de marcadores, cores, labels e capacidades de exportação aos marcadores do Visual Studio.</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/bookmark-studio-visual-studio-extension/"&gt;clique aqui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Marcadores no Visual Studio sempre foram&amp;hellip; ok. Você coloca um, navega para o próximo, esquece qual é qual. Funcionam, mas nunca foram algo que você chamaria de poderoso.&lt;/p&gt;
&lt;p&gt;Mads Kristensen acabou de &lt;a href="https://devblogs.microsoft.com/visualstudio/bookmark-studio-evolving-bookmarks-in-visual-studio/"&gt;lançar o Bookmark Studio&lt;/a&gt;, uma extensão experimental que preenche exatamente as lacunas que você provavelmente encontrou.&lt;/p&gt;
&lt;h2 id="navegação-por-slots"&gt;Navegação por slots&lt;/h2&gt;
&lt;p&gt;Marcadores podem ser atribuídos a slots de 1 a 9 e acessados diretamente com &lt;code&gt;Alt+Shift+1&lt;/code&gt; a &lt;code&gt;Alt+Shift+9&lt;/code&gt;. Novos marcadores recebem automaticamente o próximo slot disponível.&lt;/p&gt;
&lt;h2 id="o-gerenciador-de-marcadores"&gt;O Gerenciador de Marcadores&lt;/h2&gt;
&lt;p&gt;Uma nova janela exibe todos os marcadores com filtragem por nome, arquivo, localização, cor ou slot.&lt;/p&gt;
&lt;h2 id="organização-com-labels-cores-e-pastas"&gt;Organização com labels, cores e pastas&lt;/h2&gt;
&lt;p&gt;Marcadores podem ter labels, cores e serem agrupados em pastas. Metadata armazenada por solução.&lt;/p&gt;
&lt;h2 id="exportar-e-compartilhar"&gt;Exportar e compartilhar&lt;/h2&gt;
&lt;p&gt;Bookmark Studio permite exportar marcadores como texto, Markdown ou CSV.&lt;/p&gt;
&lt;h2 id="marcadores-que-acompanham-o-código"&gt;Marcadores que acompanham o código&lt;/h2&gt;
&lt;p&gt;Bookmark Studio rastreia marcadores relativos ao texto ancorado, então não se deslocam para linhas erradas.&lt;/p&gt;
&lt;h2 id="conclusão"&gt;Conclusão&lt;/h2&gt;
&lt;p&gt;Bookmark Studio não reinventa nada. Pega uma funcionalidade que era &amp;ldquo;suficiente&amp;rdquo; há anos e a torna genuinamente útil. Baixe no &lt;a href="https://marketplace.visualstudio.com/items?itemName=MadsKristensen.BookmarkStudio"&gt;Visual Studio Marketplace&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Do laptop à produção: implantando agentes de IA no Microsoft Foundry com dois comandos</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/</guid><description>O Azure Developer CLI agora tem comandos 'azd ai agent' que levam seu agente de IA do desenvolvimento local a um endpoint Foundry em produção em minutos. Aqui está o fluxo de trabalho completo.</description><content:encoded>&lt;p&gt;Você conhece aquela lacuna entre &amp;ldquo;funciona na minha máquina&amp;rdquo; e &amp;ldquo;está implantado e servindo tráfego&amp;rdquo;? Para agentes de IA, essa lacuna tem sido dolorosamente ampla. Você precisa provisionar recursos, implantar modelos, configurar identidade, montar monitoramento — e isso é antes de qualquer pessoa poder realmente chamar seu agente.&lt;/p&gt;
&lt;p&gt;O Azure Developer CLI acabou de transformar isso em &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;uma questão de dois comandos&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="o-novo-fluxo-de-trabalho-azd-ai-agent"&gt;O novo fluxo de trabalho &lt;code&gt;azd ai agent&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Deixe-me mostrar como isso realmente se parece. Você tem um projeto de agente de IA — digamos um agente concierge de hotel. Funciona localmente. Você quer ele rodando no Microsoft Foundry.&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 ai agent init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Isso é tudo. Dois comandos. &lt;code&gt;azd ai agent init&lt;/code&gt; gera a infraestrutura como código no seu repositório, e &lt;code&gt;azd up&lt;/code&gt; provisiona tudo no Azure e publica seu agente. Você recebe um link direto para seu agente no portal Foundry.&lt;/p&gt;
&lt;h2 id="o-que-acontece-por-baixo-dos-panos"&gt;O que acontece por baixo dos panos&lt;/h2&gt;
&lt;p&gt;O comando &lt;code&gt;init&lt;/code&gt; gera templates Bicep reais e inspecionáveis no seu repositório:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Um &lt;strong&gt;Foundry Resource&lt;/strong&gt; (contêiner de nível superior)&lt;/li&gt;
&lt;li&gt;Um &lt;strong&gt;Foundry Project&lt;/strong&gt; (onde seu agente vive)&lt;/li&gt;
&lt;li&gt;Configuração de &lt;strong&gt;implantação de modelo&lt;/strong&gt; (GPT-4o, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identidade gerenciada&lt;/strong&gt; com atribuições de papéis RBAC apropriadas&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azure.yaml&lt;/code&gt; para o mapa de serviços&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent.yaml&lt;/code&gt; com metadados do agente e variáveis de ambiente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;O ponto chave: tudo isso é seu. É Bicep versionado no seu repositório. Você pode inspecioná-lo, customizá-lo e fazer commit junto com o código do seu agente. Sem caixas pretas mágicas.&lt;/p&gt;
&lt;h2 id="o-ciclo-interno-de-desenvolvimento"&gt;O ciclo interno de desenvolvimento&lt;/h2&gt;
&lt;p&gt;O que eu realmente gosto é a história de desenvolvimento local. Quando você está iterando na lógica do agente, não quer reimplantar toda vez que muda um prompt:&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 ai agent run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Isso inicia seu agente localmente. Combine com &lt;code&gt;azd ai agent invoke&lt;/code&gt; para enviar prompts de teste, e você tem um ciclo de feedback apertado. Editar código, reiniciar, invocar, repetir.&lt;/p&gt;
&lt;p&gt;O comando &lt;code&gt;invoke&lt;/code&gt; também é inteligente no roteamento — quando um agente local está rodando, ele aponta automaticamente para ele. Quando não está, vai para o endpoint remoto.&lt;/p&gt;
&lt;h2 id="monitoramento-em-tempo-real"&gt;Monitoramento em tempo real&lt;/h2&gt;
&lt;p&gt;Esta é a funcionalidade que me convenceu. Uma vez que seu agente está implantado:&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 ai agent monitor --follow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cada requisição e resposta fluindo pelo seu agente é transmitida para seu terminal em tempo real. Para depurar problemas em produção, isso é inestimável. Sem vasculhar log analytics, sem esperar métricas agregarem — você vê o que está acontecendo agora.&lt;/p&gt;
&lt;h2 id="o-conjunto-completo-de-comandos"&gt;O conjunto completo de comandos&lt;/h2&gt;
&lt;p&gt;Aqui a referência rápida:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Comando&lt;/th&gt;
&lt;th&gt;O que faz&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent init&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Gera um projeto de agente Foundry com IaC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd up&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Provisiona recursos Azure e implanta o agente&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent invoke&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Envia prompts ao agente remoto ou local&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent run&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Executa o agente localmente para desenvolvimento&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent monitor&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Transmite logs em tempo real do agente publicado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd ai agent show&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Verifica saúde e status do agente&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azd down&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Limpa todos os recursos Azure&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="por-que-isso-importa-para-desenvolvedores-net"&gt;Por que isso importa para desenvolvedores .NET&lt;/h2&gt;
&lt;p&gt;Embora o exemplo do anúncio seja baseado em Python, a história de infraestrutura é agnóstica a linguagem. Seu agente .NET recebe o mesmo scaffolding Bicep, a mesma configuração de identidade gerenciada, o mesmo pipeline de monitoramento. E se você já usa &lt;code&gt;azd&lt;/code&gt; para suas apps .NET Aspire ou implantações Azure, isso se encaixa direto no seu fluxo de trabalho existente.&lt;/p&gt;
&lt;p&gt;A lacuna de implantação para agentes de IA tem sido um dos maiores pontos de fricção no ecossistema. Ir de um protótipo funcional a um endpoint de produção com identidade, rede e monitoramento adequados não deveria exigir uma semana de trabalho DevOps. Agora requer dois comandos e alguns minutos.&lt;/p&gt;
&lt;h2 id="para-finalizar"&gt;Para finalizar&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd ai agent&lt;/code&gt; está disponível agora. Se você tem adiado a implantação dos seus agentes de IA porque a configuração de infraestrutura parecia trabalho demais, experimente. Confira o &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;tutorial completo&lt;/a&gt; para o passo a passo completo incluindo integração de app de chat frontend.&lt;/p&gt;</content:encoded></item></channel></rss>