<?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/es/tags/developer-tools/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>es</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/es/tags/developer-tools/index.xml" rel="self" type="application/rss+xml"/><item><title>VS Code 1.119: OpenTelemetry para sesiones de agentes, integración del navegador y seguridad</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/visual-studio-code-1-119-highlights/</guid><description>VS Code 1.119 (mayo 2026) añade trazado OpenTelemetry para sesiones de agentes, compartición de pestañas del navegador, mejoras de confianza y seguridad, y un parche de seguridad 1.119.1.</description><content:encoded>&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/visual-studio-code-1-119-highlights/"&gt;haz clic aquí&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; salió el 6 de mayo de 2026 (con un parche de seguridad 1.119.1 poco después). La versión se centra en la observabilidad de los agentes, la interacción con el navegador y la reducción de interrupciones.&lt;/p&gt;
&lt;h2 id="trazado-opentelemetry-para-sesiones-de-agentes"&gt;Trazado OpenTelemetry para sesiones de agentes&lt;/h2&gt;
&lt;p&gt;Esta es la característica destacada para cualquiera que ejecute agentes en producción o depure flujos de trabajo agénticos. Actívala con dos configuraciones:&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;Las trazas siguen las convenciones semánticas de GenAI. Cada solicitud de agente produce un span raíz &lt;code&gt;invoke_agent&lt;/code&gt; con spans hijo anidados: &lt;code&gt;chat&lt;/code&gt;, &lt;code&gt;execute_tool&lt;/code&gt; y &lt;code&gt;execute_hook&lt;/code&gt;. El uso de tokens se reporta por solicitud — incluyendo recuentos de lectura y creación de caché.&lt;/p&gt;
&lt;p&gt;Funciona con el agente local, el agente de fondo de Copilot CLI y el agente de Claude. Cualquier backend compatible con OTLP acepta las trazas — el &lt;a href="https://learn.microsoft.com/en-us/dotnet/aspire/fundamentals/dashboard/standalone"&gt;Aspire Dashboard standalone&lt;/a&gt; funciona bien para el desarrollo local.&lt;/p&gt;
&lt;h2 id="los-agentes-ahora-pueden-acceder-a-las-pestañas-del-navegador"&gt;Los agentes ahora pueden acceder a las pestañas del navegador&lt;/h2&gt;
&lt;p&gt;Los agentes pueden solicitar acceso a las pestañas de tu navegador integrado — pero no es automático. Debes compartir explícitamente una pestaña mediante el selector de contexto, arrastrar y soltar, o contexto sugerido. Hay un botón de compartición en el navegador para revocar el acceso. Cuando un agente intenta abrir una nueva pestaña en el mismo dominio que una pestaña abierta (no compartida), VS Code te pide que reutilices la pestaña existente.&lt;/p&gt;
&lt;h2 id="uso-optimizado-de-tokens"&gt;Uso optimizado de tokens&lt;/h2&gt;
&lt;p&gt;Un modelo ligero experimental ahora gestiona las listas de tareas de los agentes, manteniendo ese trabajo administrativo fuera del modelo principal más caro. Reduce el consumo de tokens para tareas que no necesitan capacidad de razonamiento completa.&lt;/p&gt;
&lt;h2 id="confianza-y-seguridad"&gt;Confianza y seguridad&lt;/h2&gt;
&lt;p&gt;Menos interrupciones: VS Code 1.119 reduce las solicitudes de acceso a la red y escrituras en carpetas temporales por parte de los agentes. El parche 1.119.1 aborda problemas de seguridad específicos — vale la pena actualizar si aún no lo has hecho.&lt;/p&gt;
&lt;h2 id="cambio-rápido-a-vista-previa-de-markdown"&gt;Cambio rápido a vista previa de Markdown&lt;/h2&gt;
&lt;p&gt;Pequeño pero útil: ahora puedes cambiar rápidamente el editor actual a la vista previa de Markdown sin navegar.&lt;/p&gt;
&lt;h2 id="vs-code-agents-vista-previa-insiders"&gt;VS Code Agents (vista previa Insiders)&lt;/h2&gt;
&lt;p&gt;La interfaz de sesión de agentes rediseñada — nuevo selector de repositorios (local/repos/remoto), mejoras de subsesiones, pulido web y móvil, animaciones de progreso — está disponible en Insiders en &lt;a href="https://insiders.vscode.dev/agents"&gt;insiders.vscode.dev/agents&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Registro de cambios 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 se retira: mueve tu flujo de Azure SQL a VS Code</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/azure-data-studio-retired-move-to-vscode-sql/</guid><description>Azure Data Studio se retiró el 6 de febrero de 2025, con soporte hasta el 28 de febrero de 2026. Aquí está la ruta de migración completa a VS Code con la extensión MSSQL.</description><content:encoded>&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/azure-data-studio-retired-move-to-vscode-sql/"&gt;haz clic aquí&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 se retiró el 6 de febrero de 2025&lt;/a&gt;, con soporte hasta el 28 de febrero de 2026 — el reemplazo recomendado es VS Code con la extensión MSSQL.&lt;/p&gt;
&lt;h2 id="qué-instalar"&gt;Qué instalar&lt;/h2&gt;
&lt;p&gt;Tres cosas para empezar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extensión MSSQL&lt;/strong&gt; — busca &amp;ldquo;SQL Server (mssql)&amp;rdquo; en el Marketplace de VS Code&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extensión SQL Database Projects&lt;/strong&gt; — esquema como código, validación de compilación, publicación guiada&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;.NET 8 SDK&lt;/strong&gt; — requerido por el sistema de compilación; el SDK faltante es el problema más común al primer uso&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="migrar-tus-conexiones-y-configuraciones-de-ads"&gt;Migrar tus conexiones y configuraciones de ADS&lt;/h2&gt;
&lt;p&gt;La extensión MSSQL incluye el &lt;strong&gt;ADS Migration Toolkit&lt;/strong&gt;, que gestiona la migración única en un flujo guiado: conexiones guardadas, grupos de conexiones, configuraciones y atajos de teclado se importan automáticamente.&lt;/p&gt;
&lt;h2 id="recuperar-el-músculo-del-f5"&gt;Recuperar el músculo del F5&lt;/h2&gt;
&lt;p&gt;Los usuarios de ADS dependen de F5 para ejecutar consultas. Instala la extensión &lt;strong&gt;MSSQL Database Management Keymap&lt;/strong&gt; para recuperar los atajos de teclado al estilo ADS, incluido 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;Clic derecho en un proyecto → &lt;strong&gt;Publicar&lt;/strong&gt; → configurar destino → revisar el script T-SQL generado → desplegar. La vista previa del script antes del despliegue es la característica clave de seguridad. Las plantillas de elementos generan esqueletos para tablas, procedimientos almacenados y vistas — el mismo flujo que SSDT.&lt;/p&gt;
&lt;p&gt;Problema frecuente: una &lt;strong&gt;incompatibilidad de plataforma de destino&lt;/strong&gt; en el archivo &lt;code&gt;.sqlproj&lt;/code&gt; causará errores de compilación si el proyecto fue creado contra una versión diferente de SQL Server.&lt;/p&gt;
&lt;h2 id="schema-compare-y-schema-designer"&gt;Schema Compare y Schema Designer&lt;/h2&gt;
&lt;p&gt;La extensión también incluye &lt;strong&gt;Schema Compare&lt;/strong&gt; (diferencia entre tu proyecto y la base de datos desplegada) y &lt;strong&gt;Schema Designer&lt;/strong&gt; (edición visual del esquema sin escribir DDL a mano).&lt;/p&gt;
&lt;h2 id="desarrolladores-de-microsoft-fabric"&gt;Desarrolladores de Microsoft Fabric&lt;/h2&gt;
&lt;p&gt;La configuración es idéntica, pero comienza desde el &lt;strong&gt;portal de Fabric&lt;/strong&gt; y conecta la base de datos a Git primero antes de abrirla en VS Code. Microsoft tiene una guía dedicada: &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="conclusión"&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;La migración es un flujo guiado de una sola vez, no una reconstrucción manual. Instala las tres herramientas, ejecuta el ADS Migration Toolkit, restaura tus atajos de teclado y estarás de vuelta a la normalidad en menos de 10 minutos.&lt;/p&gt;
&lt;p&gt;Consulta el &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;artículo completo&lt;/a&gt; para capturas de pantalla paso a paso y el tutorial específico de Fabric.&lt;/p&gt;
&lt;p&gt;Este cambio ayuda cuando hay que equilibrar velocidad de entrega, consistencia de plataforma y gobernanza.&lt;/p&gt;
&lt;h2 id="siguientes-pasos-practicos"&gt;Siguientes pasos practicos&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Valida la funcionalidad en un piloto .NET pequeno con datos realistas.&lt;/li&gt;
&lt;li&gt;Define observabilidad y un plan de rollback antes de escalar.&lt;/li&gt;
&lt;li&gt;Documenta el patron para reutilizarlo en otros equipos.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="fuente"&gt;Fuente&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Articulo original: &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;https://devblogs.microsoft.com/azure-sql/azure-data-studio-is-retired-move-your-azure-sql-workflow-to-vs-code-in-10-minutes/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>El Azure MCP Server Ahora es un .mcpb — Instálalo sin Ningún Runtime</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/</guid><description>El Azure MCP Server ya está disponible como MCP Bundle (.mcpb) — descárgalo, arrástralo a Claude Desktop y listo. Sin Node.js, Python ni .NET requeridos.</description><content:encoded>&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/azure-mcp-server-mcpb-no-runtime-install/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;¿Sabes qué era molesto de configurar servidores MCP? Necesitabas un runtime. Node.js para la versión npm, Python para pip/uvx, .NET SDK para la variante dotnet, Docker si querías contenedores. Solo para conectar una herramienta a tu cliente IA.&lt;/p&gt;
&lt;p&gt;El &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-mcp-server-mcpb-support/"&gt;Azure MCP Server acaba de cambiar eso&lt;/a&gt;. Ahora está disponible como &lt;code&gt;.mcpb&lt;/code&gt; — un MCP Bundle — y la configuración es arrastrar y soltar.&lt;/p&gt;
&lt;h2 id="qué-es-un-mcp-bundle"&gt;¿Qué es un MCP Bundle?&lt;/h2&gt;
&lt;p&gt;Piénsalo como una extensión de VS Code (&lt;code&gt;.vsix&lt;/code&gt;) o una extensión de navegador (&lt;code&gt;.crx&lt;/code&gt;), pero para servidores MCP. Un archivo &lt;code&gt;.mcpb&lt;/code&gt; es un archivo ZIP autónomo que incluye el binario del servidor y todas sus dependencias. Todo lo necesario para ejecutarlo en tu plataforma, empaquetado junto.&lt;/p&gt;
&lt;p&gt;El resultado: descargas un archivo, lo abres en un cliente compatible y el servidor funciona. Sin runtime que instalar, sin &lt;code&gt;package.json&lt;/code&gt; que gestionar, sin conflictos de versiones.&lt;/p&gt;
&lt;h2 id="cómo-instalarlo"&gt;Cómo instalarlo&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. Descarga el bundle para tu plataforma&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ve a la &lt;a href="https://github.com/microsoft/mcp/releases?q=Azure.Mcp.Server"&gt;página de GitHub Releases&lt;/a&gt; y descarga el archivo &lt;code&gt;.mcpb&lt;/code&gt; para tu OS y arquitectura. Asegúrate de elegir el correcto — &lt;code&gt;osx-arm64&lt;/code&gt; para Apple Silicon, &lt;code&gt;osx-x64&lt;/code&gt; para Mac Intel, etc.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Instala en Claude Desktop&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La forma más fácil: arrastra y suelta el archivo &lt;code&gt;.mcpb&lt;/code&gt; en la ventana de Claude Desktop mientras estás en la página de configuración de Extensiones (&lt;code&gt;☰ → Archivo → Configuración → Extensiones&lt;/code&gt;). Revisa los detalles del servidor, haz clic en Instalar y confirma.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Autentícate en 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;Eso es todo. El Azure MCP Server usa tus credenciales de Azure existentes.&lt;/p&gt;
&lt;h2 id="qué-puedes-hacer-con-él"&gt;Qué puedes hacer con él&lt;/h2&gt;
&lt;p&gt;Una vez instalado, tienes acceso a más de 100 herramientas de servicios Azure directamente desde tu cliente IA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Consultar y administrar Cosmos DB, Storage, Key Vault, App Service, Foundry&lt;/li&gt;
&lt;li&gt;Generar comandos &lt;code&gt;az&lt;/code&gt; CLI para cualquier tarea&lt;/li&gt;
&lt;li&gt;Crear plantillas Bicep y Terraform&lt;/li&gt;
&lt;li&gt;Obtener recomendaciones de arquitectura y diagnósticos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prueba prompts como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Lista todos los grupos de recursos en mi suscripción&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Genera una plantilla Bicep para una app web con base de datos SQL&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="qué-método-de-instalación-usar"&gt;¿Qué método de instalación usar?&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Método&lt;/th&gt;
&lt;th&gt;Ideal para&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.mcpb&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Usuarios de Claude Desktop que quieren cero configuración&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extensión VS Code&lt;/td&gt;
&lt;td&gt;Desarrolladores en VS Code + GitHub Copilot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;npm/npx&lt;/td&gt;
&lt;td&gt;Desarrolladores que ya tienen Node.js&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docker&lt;/td&gt;
&lt;td&gt;Pipelines CI/CD y contenedores&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="para-empezar"&gt;Para empezar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Descarga&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;Repositorio&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;Consulta el &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-mcp-server-mcpb-support/"&gt;post completo&lt;/a&gt; para consejos de solución de problemas.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.118: Copilot CLI Obtiene Nombres de Sesión, Insignias de Modelo y TypeScript 7.0 Nightly</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/vscode-1-118-copilot-cli-session-names-model-badge/</guid><description>Visual Studio Code 1.118 es un lanzamiento enfocado en mejoras de Copilot CLI — nombrado de sesiones, insignias de modelo, selección automática de modelo y opt-in a TypeScript 7.0 nightly.</description><content:encoded>&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/vscode-1-118-copilot-cli-session-names-model-badge/"&gt;haz clic aquí&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; es un lanzamiento pequeño y enfocado — principalmente refinamientos de Copilot CLI — pero hay algunas cosas a destacar.&lt;/p&gt;
&lt;h2 id="copilot-cli-las-sesiones-tienen-nombres-reales"&gt;Copilot CLI: las sesiones tienen nombres reales&lt;/h2&gt;
&lt;p&gt;Las APIs de título de sesión del SDK de Copilot CLI ahora se usan como fuente de verdad para los nombres de sesión. Antes obtenías etiquetas auto-generadas; ahora las sesiones muestran el nombre real del SDK. Mejora de calidad de vida que hace mucho menos confusa la navegación entre múltiples sesiones de agente.&lt;/p&gt;
&lt;h2 id="cambia-de-sesión-más-rápido-con-atajos-de-teclado"&gt;Cambia de sesión más rápido con atajos de teclado&lt;/h2&gt;
&lt;p&gt;La app de Agents ahora tiene &lt;code&gt;Ctrl+1&lt;/code&gt;, &lt;code&gt;Ctrl+2&lt;/code&gt;, etc. asignados para cambiar rápidamente entre sesiones. Si estás ejecutando múltiples sesiones de Copilot CLI en paralelo, esto elimina mucho clic con el ratón.&lt;/p&gt;
&lt;h2 id="insignias-de-modelo-en-el-chat"&gt;Insignias de modelo en el chat&lt;/h2&gt;
&lt;p&gt;Las respuestas de Copilot CLI en el panel de chat ahora muestran una insignia de modelo — puedes ver de un vistazo qué modelo manejó cada solicitud.&lt;/p&gt;
&lt;h2 id="selección-automática-de-modelo-en-copilot-cli"&gt;Selección automática de modelo en Copilot CLI&lt;/h2&gt;
&lt;p&gt;La selección automática de modelo — previamente disponible en otras partes de Copilot — ahora funciona también en el agente Copilot CLI.&lt;/p&gt;
&lt;h2 id="opt-in-a-typescript-70-nightly"&gt;Opt-in a TypeScript 7.0 nightly&lt;/h2&gt;
&lt;p&gt;Ahora puedes optar por probar los nightly de TypeScript 7.0 directamente desde la configuración de VS Code. TypeScript 7.0 es un lanzamiento importante (la &lt;a href="https://devblogs.microsoft.com/typescript/announcing-typescript-7-0-beta/"&gt;beta llegó hace unos días&lt;/a&gt;), y el path de opt-in facilita la prueba sin cambiar tu instalación global de TypeScript.&lt;/p&gt;
&lt;h2 id="bajo-el-capó-limpieza-de-node-pty"&gt;Bajo el capó: limpieza de &lt;code&gt;node-pty&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;El SDK de Copilot CLI ahora resuelve &lt;code&gt;node-pty&lt;/code&gt; desde VS Code via &lt;code&gt;hostRequire&lt;/code&gt; en lugar de copiar binarios a la carpeta prebuilds del SDK. Cambio interno que simplifica la distribución.&lt;/p&gt;
&lt;p&gt;Consulta las &lt;a href="https://code.visualstudio.com/updates/v1_118"&gt;notas de versión completas&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Foundry Toolboxes: Un único endpoint para todas las herramientas de tus agentes</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/</guid><description>Microsoft Foundry acaba de lanzar Toolboxes en preview pública — una forma de curar, gestionar y exponer herramientas de agentes IA a través de un único endpoint compatible con MCP, sin tener que reconfigurar todo en cada agente.</description><content:encoded>&lt;p&gt;&lt;em&gt;Esta publicación fue traducida automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/foundry-toolboxes-curate-manage-tools-ai-agents/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Aquí hay un problema que parece aburrido hasta que lo sufres en carne propia: tu organización está construyendo múltiples agentes de IA, cada uno necesita herramientas, y cada equipo las conecta desde cero. La misma integración de búsqueda web, la misma config de Azure AI Search, la misma conexión al servidor MCP de GitHub — pero en otro repositorio, por otro equipo, con otras credenciales y sin ninguna gobernanza compartida.&lt;/p&gt;
&lt;p&gt;Microsoft Foundry acaba de lanzar &lt;a href="https://devblogs.microsoft.com/foundry/introducing-toolboxes-in-foundry/"&gt;Toolboxes&lt;/a&gt; en preview pública, y es una respuesta directa a ese problema.&lt;/p&gt;
&lt;h2 id="qué-es-un-toolbox"&gt;¿Qué es un Toolbox?&lt;/h2&gt;
&lt;p&gt;Un Toolbox es un bundle de herramientas con nombre, reutilizable, que defines una vez en Foundry y expones a través de un único endpoint compatible con MCP. Cualquier runtime de agente que hable MCP puede consumirlo — no estás bloqueado en Foundry Agents.&lt;/p&gt;
&lt;p&gt;La propuesta es simple: &lt;strong&gt;build once, consume anywhere&lt;/strong&gt;. Define las herramientas, configura la autenticación de forma centralizada (OAuth passthrough, identidad administrada de Entra), publica el endpoint. Cada agente que necesite esas herramientas se conecta al endpoint y las obtiene todas.&lt;/p&gt;
&lt;p&gt;Sin configuración por herramienta. Sin gestión de credenciales por agente.&lt;/p&gt;
&lt;h2 id="los-cuatro-pilares-dos-disponibles-hoy"&gt;Los cuatro pilares (dos disponibles hoy)&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pilar&lt;/th&gt;
&lt;th&gt;Estado&lt;/th&gt;
&lt;th&gt;Qué hace&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;Próximamente&lt;/td&gt;
&lt;td&gt;Encuentra herramientas aprobadas sin buscar manualmente&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;Disponible hoy&lt;/td&gt;
&lt;td&gt;Agrupa herramientas en un bundle reutilizable&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;Disponible hoy&lt;/td&gt;
&lt;td&gt;Un único endpoint MCP expone todas las herramientas&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;Próximamente&lt;/td&gt;
&lt;td&gt;Auth centralizada + observabilidad en todas las llamadas&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Hoy el foco está en Build y Consume. Suficiente para eliminar la fricción más inmediata.&lt;/p&gt;
&lt;h2 id="empezando-en-la-práctica"&gt;Empezando en la práctica&lt;/h2&gt;
&lt;p&gt;El SDK es Python primero por ahora. Comienzas creando un &lt;code&gt;AIProjectClient&lt;/code&gt; y luego construyes un toolbox:&lt;/p&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Luego creas una versión del toolbox con las herramientas que quieres agrupar:&lt;/p&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="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 en documentación y responder a issues de 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 documentación 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;Una vez publicado, Foundry te da un endpoint unificado que cualquier runtime MCP puede consumir. Un punto de conexión, todas las herramientas.&lt;/p&gt;
&lt;h2 id="no-estás-bloqueado-en-foundry-agents"&gt;No estás bloqueado en Foundry Agents&lt;/h2&gt;
&lt;p&gt;Los Toolboxes se &lt;strong&gt;crean y gestionan&lt;/strong&gt; en Foundry, pero la superficie de consumo es el protocolo MCP abierto. Puedes usarlos desde agentes personalizados con Microsoft Agent Framework o LangGraph, GitHub Copilot y otros IDEs compatibles con MCP, o cualquier runtime que hable MCP.&lt;/p&gt;
&lt;h2 id="por-qué-importa-ahora"&gt;Por qué importa ahora&lt;/h2&gt;
&lt;p&gt;La ola de multi-agentes está llegando a producción. Los equipos están construyendo 5, 10, 20 agentes — y el problema de la configuración de herramientas escala rápido. Cada nuevo agente es una nueva superficie para configuración duplicada, credenciales desactualizadas y comportamiento inconsistente.&lt;/p&gt;
&lt;p&gt;Los Toolboxes no resuelven la gobernanza y el discovery todavía (esos pilares están por venir), pero la base de Build + Consume es suficiente para empezar a centralizar. Cuando llegue el pilar Govern, tendrás una capa de herramientas observable y controlada centralmente para toda tu flota de agentes.&lt;/p&gt;
&lt;h2 id="conclusión"&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Esto es pronto — preview pública, SDK Python primero, con Discover y Govern todavía por llegar. Pero el modelo es sólido, y el diseño nativo de MCP significa que funciona con las herramientas que ya estás construyendo. Echa un vistazo al &lt;a href="https://devblogs.microsoft.com/foundry/introducing-toolboxes-in-foundry/"&gt;anuncio oficial&lt;/a&gt; para empezar.&lt;/p&gt;</content:encoded></item><item><title>Hooks de azd en Python, TypeScript y .NET: adiós a los scripts de shell</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/</guid><description>La CLI de Azure Developer ahora permite escribir hooks en Python, JavaScript, TypeScript o .NET. Se acabó el cambio de contexto a Bash solo para ejecutar un script de migración.</description><content:encoded>&lt;p&gt;&lt;em&gt;Esta publicación fue traducida automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Si alguna vez has tenido un proyecto completamente en .NET y aun así tuviste que escribir scripts Bash solo para los hooks de azd, conoces bien ese dolor. ¿Por qué cambiar a sintaxis de shell en un paso de pre-provisioning cuando todo lo demás en el proyecto es C#?&lt;/p&gt;
&lt;p&gt;Esa frustración tiene solución oficial. La Azure Developer CLI &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-multi-language-hooks/"&gt;acaba de lanzar soporte multi-lenguaje para hooks&lt;/a&gt;, y es exactamente tan bueno como suena.&lt;/p&gt;
&lt;h2 id="hooks-brevemente-por-si-no-los-conoces"&gt;Hooks, brevemente, por si no los conoces&lt;/h2&gt;
&lt;p&gt;Los hooks son scripts que se ejecutan en puntos clave del ciclo de vida de &lt;code&gt;azd&lt;/code&gt; — antes del provisioning, después del despliegue, y más. Se definen en &lt;code&gt;azure.yaml&lt;/code&gt; y permiten inyectar lógica personalizada sin modificar la CLI.&lt;/p&gt;
&lt;p&gt;Antes solo se admitían Bash y PowerShell. Ahora puedes usar &lt;strong&gt;Python, JavaScript, TypeScript o .NET&lt;/strong&gt; — y &lt;code&gt;azd&lt;/code&gt; se encarga del resto automáticamente.&lt;/p&gt;
&lt;h2 id="cómo-funciona-la-detección"&gt;Cómo funciona la detección&lt;/h2&gt;
&lt;p&gt;Simplemente apuntas el hook a un archivo y &lt;code&gt;azd&lt;/code&gt; infiere el lenguaje por la extensión:&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;Eso es todo. Sin config adicional. Si la extensión es ambigua, puedes añadir &lt;code&gt;kind: python&lt;/code&gt; (o el que corresponda) para especificarlo explícitamente.&lt;/p&gt;
&lt;h2 id="detalles-importantes-por-lenguaje"&gt;Detalles importantes por lenguaje&lt;/h2&gt;
&lt;h3 id="python"&gt;Python&lt;/h3&gt;
&lt;p&gt;Coloca un &lt;code&gt;requirements.txt&lt;/code&gt; o &lt;code&gt;pyproject.toml&lt;/code&gt; junto al script (o en cualquier directorio padre) y &lt;code&gt;azd&lt;/code&gt; crea un entorno virtual, instala dependencias y ejecuta el script:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;hooks/
├── setup.py
└── requirements.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sin gestión manual de virtualenv. &lt;code&gt;azd&lt;/code&gt; busca hacia arriba desde el script el archivo de proyecto más cercano.&lt;/p&gt;
&lt;h3 id="javascript-y-typescript"&gt;JavaScript y TypeScript&lt;/h3&gt;
&lt;p&gt;El mismo patrón — pon un &lt;code&gt;package.json&lt;/code&gt; cerca del script y &lt;code&gt;azd&lt;/code&gt; ejecutará &lt;code&gt;npm install&lt;/code&gt; primero. Para TypeScript, usa &lt;code&gt;npx tsx&lt;/code&gt; sin paso de compilación ni &lt;code&gt;tsconfig.json&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;hooks/
├── seed.ts
└── package.json
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;¿Quieres usar pnpm o yarn? Hay una opción &lt;code&gt;config.packageManager&lt;/code&gt; para eso.&lt;/p&gt;
&lt;h3 id="net"&gt;.NET&lt;/h3&gt;
&lt;p&gt;Dos modos disponibles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modo proyecto&lt;/strong&gt;: Si hay un &lt;code&gt;.csproj&lt;/code&gt; junto al script, &lt;code&gt;azd&lt;/code&gt; ejecuta &lt;code&gt;dotnet restore&lt;/code&gt; y &lt;code&gt;dotnet build&lt;/code&gt; automáticamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modo single-file&lt;/strong&gt;: En .NET 10+, puedes poner un archivo &lt;code&gt;.cs&lt;/code&gt; independiente y se ejecuta directamente con &lt;code&gt;dotnet run script.cs&lt;/code&gt;. Sin archivo de proyecto.&lt;/li&gt;
&lt;/ul&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;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;Si ya estás en .NET 10, el modo single-file es la opción más limpia para scripts simples de migración o seeding. Sin scaffolding, sin &lt;code&gt;.csproj&lt;/code&gt; que mantener.&lt;/p&gt;
&lt;h2 id="config-por-ejecutor"&gt;Config por ejecutor&lt;/h2&gt;
&lt;p&gt;Cada lenguaje soporta un bloque &lt;code&gt;config&lt;/code&gt; opcional para ajustar los valores por defecto:&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;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.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;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;virtualEnvName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;.venv&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;p&gt;También puedes mezclar formatos en el mismo bloque &lt;code&gt;hooks:&lt;/code&gt; — distintos lenguajes para distintos eventos del ciclo de vida, overrides por plataforma para Windows vs. Linux, lo que necesites.&lt;/p&gt;
&lt;h2 id="por-qué-importa-para-desarrolladores-net"&gt;Por qué importa para desarrolladores .NET&lt;/h2&gt;
&lt;p&gt;La respuesta aburrida es &amp;ldquo;consistencia&amp;rdquo;. Pero en la práctica va más allá. Los hooks eran el último lugar de un proyecto basado en azd que te obligaba a usar otro lenguaje. Ahora todo el pipeline de despliegue — código de app, scripts de infraestructura y hooks del ciclo de vida — puede vivir en un solo lenguaje.&lt;/p&gt;
&lt;p&gt;Más concreto: puedes reutilizar tus utilidades .NET existentes en los hooks. ¿Tienes una librería compartida para gestión de esquemas de base de datos? Simplemente referencíala en el proyecto del hook. ¿Tienes un script Python de seeding que ya escribiste? Ponlo directamente en &lt;code&gt;azure.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="conclusión"&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Es uno de esos cambios que parecen pequeños pero que eliminan mucha fricción del día a día con azd. El soporte multi-lenguaje para hooks ya está disponible — revisa el &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-multi-language-hooks/"&gt;post oficial&lt;/a&gt; para la documentación completa y el &lt;a href="https://github.com/Azure/azure-dev"&gt;repositorio de azd en GitHub&lt;/a&gt; para probarlo en tu próximo proyecto.&lt;/p&gt;</content:encoded></item><item><title>Windows App Dev CLI v0.3: F5 desde la terminal y automatización de UI para agentes</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/</guid><description>Windows App Development CLI v0.3 llega con winapp run para lanzar y depurar desde la terminal, winapp ui para automatización de UI, y un paquete NuGet que hace que dotnet run funcione con apps empaquetadas.</description><content:encoded>&lt;p&gt;&lt;em&gt;Esta publicación fue traducida automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;La experiencia F5 de Visual Studio es fantástica. Pero tener que abrir VS solo para lanzar y depurar una app Windows empaquetada es excesivo cuando estás en un pipeline de CI, ejecutando un workflow automatizado, o — cada vez más — cuando un agente de IA está haciendo las pruebas.&lt;/p&gt;
&lt;p&gt;Windows App Development CLI v0.3 acaba de &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;salir&lt;/a&gt; y lo aborda directamente con dos funciones destacadas: &lt;code&gt;winapp run&lt;/code&gt; y &lt;code&gt;winapp ui&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="winapp-run-f5-desde-cualquier-sitio"&gt;winapp run: F5 desde cualquier sitio&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;winapp run&lt;/code&gt; toma una carpeta de app sin empaquetar y un manifiesto, y hace todo lo que VS hace en un debug launch: registra un paquete loose, lanza la app y preserva el &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;# Construye tu app, luego ejecútala como app empaquetada&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 y más. Los modos están pensados tanto para desarrolladores como para workflows automatizados:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--detach&lt;/code&gt;&lt;/strong&gt;: Lanza y devuelve el control a la terminal inmediatamente. Perfecto para CI/automation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--unregister-on-exit&lt;/code&gt;&lt;/strong&gt;: Limpia el paquete registrado al cerrar la app. Ejecuciones de test limpias.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--debug-output&lt;/code&gt;&lt;/strong&gt;: Captura mensajes &lt;code&gt;OutputDebugString&lt;/code&gt; y excepciones en tiempo real. Añade &lt;code&gt;--symbols&lt;/code&gt; para PDBs del Microsoft Symbol Server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="nuevo-paquete-nuget-dotnet-run-para-apps-empaquetadas"&gt;Nuevo paquete NuGet: dotnet run para apps empaquetadas&lt;/h2&gt;
&lt;p&gt;Para desarrolladores .NET hay un nuevo paquete NuGet: &lt;code&gt;Microsoft.Windows.SDK.BuildTools.WinApp&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Añádelo al proyecto (o deja que &lt;code&gt;winapp init&lt;/code&gt; lo haga), y &lt;code&gt;dotnet run&lt;/code&gt; maneja todo el inner loop: build, preparar un paquete loose-layout, registrar en Windows y lanzar — todo en un paso.&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;# Deja que winapp init lo configure&lt;/span&gt;
&lt;/span&gt;&lt;/span&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# O instala directamente&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;p&gt;Funciona con WinUI, WPF, WinForms, Console, Avalonia. Sin comandos adicionales, sin registro manual. Solo &lt;code&gt;dotnet run&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="winapp-ui-ui-automation-desde-la-línea-de-comandos"&gt;winapp ui: UI Automation desde la línea de comandos&lt;/h2&gt;
&lt;p&gt;Este es el que abre los escenarios agénticos. &lt;code&gt;winapp ui&lt;/code&gt; te da acceso completo de UI Automation a cualquier app Windows en ejecución — WPF, WinForms, Win32, Electron, WinUI3 — todo desde la terminal.&lt;/p&gt;
&lt;p&gt;Lo que puedes hacer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Listar todas las ventanas de nivel superior&lt;/li&gt;
&lt;li&gt;Navegar el árbol completo de UI Automation de cualquier ventana&lt;/li&gt;
&lt;li&gt;Buscar elementos por nombre, tipo o ID de automatización&lt;/li&gt;
&lt;li&gt;Hacer clic, invocar y establecer valores&lt;/li&gt;
&lt;li&gt;Tomar capturas de pantalla&lt;/li&gt;
&lt;li&gt;Esperar a que aparezcan elementos — ideal para sincronización de tests&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Combina &lt;code&gt;winapp ui&lt;/code&gt; con &lt;code&gt;winapp run&lt;/code&gt; y tienes un workflow completo build → lanzar → verificar desde la terminal. Un agente puede ejecutar tu app, inspeccionar el estado de UI, interactuar con ella programáticamente y validar el resultado.&lt;/p&gt;
&lt;h2 id="otras-novedades"&gt;Otras novedades&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp unregister&lt;/code&gt;&lt;/strong&gt;: Elimina un paquete sideloaded cuando terminas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp manifest add-alias&lt;/code&gt;&lt;/strong&gt;: Añade un &lt;code&gt;uap5:AppExecutionAlias&lt;/code&gt; para lanzar la app por nombre desde la terminal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tab completion&lt;/strong&gt;: Configura completado con un solo comando para PowerShell.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Package.appxmanifest&lt;/code&gt; por defecto&lt;/strong&gt;: Ahora &lt;code&gt;winapp init&lt;/code&gt; crea &lt;code&gt;Package.appxmanifest&lt;/code&gt; (convención VS) en lugar de &lt;code&gt;appxmanifest.xml&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="cómo-obtenerlo"&gt;Cómo obtenerlo&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;# o&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;La CLI está en preview pública. Consulta el &lt;a href="https://github.com/microsoft/WinAppCli"&gt;repositorio en GitHub&lt;/a&gt; para documentación completa y el &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;anuncio original&lt;/a&gt; para todos los detalles.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.117: Los Agentes Están Obteniendo Sus Propias Ramas de Git y Estoy Totalmente a Favor</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/vscode-1-117-agents-autopilot-worktrees/</guid><description>VS Code 1.117 trae aislamiento con worktrees para sesiones de agentes, modo Autopilot persistente y soporte para subagentes. El flujo de trabajo con agentes de código se puso mucho más serio.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/vscode-1-117-agents-autopilot-worktrees/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;La línea entre &amp;ldquo;asistente de IA&amp;rdquo; y &amp;ldquo;compañero de equipo de IA&amp;rdquo; sigue haciéndose más delgada. VS Code 1.117 acaba de salir y las &lt;a href="https://code.visualstudio.com/updates/v1_117"&gt;notas de la versión completas&lt;/a&gt; están cargadas, pero la historia está clara: los agentes se están convirtiendo en ciudadanos de primera clase en tu flujo de trabajo de desarrollo.&lt;/p&gt;
&lt;p&gt;Esto es lo que realmente importa.&lt;/p&gt;
&lt;h2 id="el-modo-autopilot-finalmente-recuerda-tu-preferencia"&gt;El modo Autopilot finalmente recuerda tu preferencia&lt;/h2&gt;
&lt;p&gt;Antes, tenías que volver a activar Autopilot cada vez que iniciabas una nueva sesión. Molesto. Ahora tu modo de permisos persiste entre sesiones y puedes configurar el valor por defecto.&lt;/p&gt;
&lt;p&gt;El Agent Host soporta tres configuraciones de sesión:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Default&lt;/strong&gt; — las herramientas piden confirmación antes de ejecutarse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bypass&lt;/strong&gt; — aprueba todo automáticamente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autopilot&lt;/strong&gt; — totalmente autónomo, responde sus propias preguntas y sigue adelante&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si estás creando un nuevo proyecto .NET con migraciones, Docker y CI — configúralo en Autopilot una vez y olvídate. Esa preferencia se mantiene.&lt;/p&gt;
&lt;h2 id="worktree-y-aislamiento-de-git-para-sesiones-de-agentes"&gt;Worktree y aislamiento de git para sesiones de agentes&lt;/h2&gt;
&lt;p&gt;Esta es la grande. Las sesiones de agentes ahora soportan aislamiento completo con worktrees y git. Eso significa que cuando un agente trabaja en una tarea, obtiene su propia rama y directorio de trabajo. Tu rama principal queda intacta.&lt;/p&gt;
&lt;p&gt;Mejor aún — Copilot CLI genera nombres de rama significativos para estas sesiones de worktree. Se acabó el &lt;code&gt;agent-session-abc123&lt;/code&gt;. Obtienes algo que realmente describe lo que el agente está haciendo.&lt;/p&gt;
&lt;p&gt;Para desarrolladores .NET que manejan múltiples ramas de features o corrigen bugs mientras una tarea larga de scaffolding corre, esto es un cambio total. Puedes tener un agente construyendo tus controladores de API en un worktree mientras tú depuras un problema en la capa de servicios en otro. Sin conflictos. Sin stashing. Sin desorden.&lt;/p&gt;
&lt;h2 id="subagentes-y-equipos-de-agentes"&gt;Subagentes y equipos de agentes&lt;/h2&gt;
&lt;p&gt;El Agent Host Protocol ahora soporta subagentes. Un agente puede lanzar otros agentes para manejar partes de una tarea. Piénsalo como delegar — tu agente principal coordina, y agentes especializados se encargan de las piezas.&lt;/p&gt;
&lt;p&gt;Esto es temprano, pero el potencial para flujos de trabajo .NET es obvio. Imagina un agente manejando tus migraciones de EF Core mientras otro configura tus pruebas de integración. No estamos totalmente ahí todavía, pero que el soporte del protocolo aterrice ahora significa que las herramientas vendrán rápido.&lt;/p&gt;
&lt;h2 id="la-salida-del-terminal-se-incluye-automáticamente-cuando-los-agentes-envían-input"&gt;La salida del terminal se incluye automáticamente cuando los agentes envían input&lt;/h2&gt;
&lt;p&gt;Pequeño pero significativo. Cuando un agente envía input al terminal, la salida del terminal ahora se incluye automáticamente en el contexto. Antes, el agente tenía que hacer un turno extra solo para leer lo que pasó.&lt;/p&gt;
&lt;p&gt;Si alguna vez viste a un agente ejecutar &lt;code&gt;dotnet build&lt;/code&gt;, fallar, y luego tomar otro viaje de ida y vuelta solo para ver el error — esa fricción desapareció. Ve la salida inmediatamente y reacciona.&lt;/p&gt;
&lt;h2 id="la-app-de-agents-en-macos-se-auto-actualiza"&gt;La app de Agents en macOS se auto-actualiza&lt;/h2&gt;
&lt;p&gt;La app independiente de Agents en macOS ahora se auto-actualiza. No más descargas manuales de nuevas versiones. Simplemente se mantiene al día.&lt;/p&gt;
&lt;h2 id="las-cosas-más-pequeñas-que-vale-la-pena-saber"&gt;Las cosas más pequeñas que vale la pena saber&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Los &lt;strong&gt;hovers de package.json&lt;/strong&gt; ahora muestran tanto la versión instalada como la última disponible. Útil si manejas herramientas npm junto con tus proyectos .NET.&lt;/li&gt;
&lt;li&gt;Las &lt;strong&gt;imágenes en comentarios JSDoc&lt;/strong&gt; se renderizan correctamente en hovers y completados.&lt;/li&gt;
&lt;li&gt;Las &lt;strong&gt;sesiones de Copilot CLI&lt;/strong&gt; ahora indican si fueron creadas por VS Code o externamente — práctico cuando saltas entre terminales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copilot CLI, Claude Code y Gemini CLI&lt;/strong&gt; son reconocidos como tipos de shell. El editor sabe lo que estás ejecutando.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="la-conclusión"&gt;La conclusión&lt;/h2&gt;
&lt;p&gt;VS Code 1.117 no es un volcado de features llamativas. Es infraestructura. Aislamiento con worktrees, permisos persistentes, protocolos de subagentes — estos son los bloques de construcción para un flujo de trabajo donde los agentes manejan tareas reales y paralelas sin pisar tu código.&lt;/p&gt;
&lt;p&gt;Si estás construyendo con .NET y todavía no te has metido en el flujo de trabajo con agentes, honestamente, ahora es el momento de empezar.&lt;/p&gt;</content:encoded></item><item><title>Deja de vigilar tu terminal: el modo desacoplado de Aspire cambia el flujo de trabajo</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/</guid><description>Aspire 13.2 te permite ejecutar tu AppHost en segundo plano y recuperar tu terminal. Combinado con los nuevos comandos CLI y el soporte para agentes, esto es más importante de lo que parece.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Cada vez que ejecutas un AppHost de Aspire, tu terminal desaparece. Bloqueada. Ocupada hasta que presionas Ctrl+C. ¿Necesitas ejecutar un comando rápido? Abre otra pestaña. ¿Quieres revisar los logs? Otra pestaña. Es una pequeña fricción que se acumula rápido.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 soluciona esto. James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;escribió todos los detalles&lt;/a&gt;, y honestamente, esta es una de esas funcionalidades que cambia inmediatamente tu forma de trabajar.&lt;/p&gt;
&lt;h2 id="modo-desacoplado-un-comando-terminal-de-vuelta"&gt;Modo desacoplado: un comando, terminal de vuelta&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;Ese es el atajo para &lt;code&gt;aspire run --detach&lt;/code&gt;. Tu AppHost arranca en segundo plano y recuperas tu terminal de inmediato. Sin pestañas extra. Sin multiplexor de terminal. Solo tu prompt, listo para usar.&lt;/p&gt;
&lt;h2 id="gestionando-lo-que-está-en-ejecución"&gt;Gestionando lo que está en ejecución&lt;/h2&gt;
&lt;p&gt;La cuestión es que ejecutar en segundo plano solo es útil si puedes gestionar lo que hay ahí fuera. Aspire 13.2 incluye un conjunto completo de comandos CLI para exactamente eso:&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;Esto convierte el CLI de Aspire en un gestor de procesos completo. Puedes iniciar múltiples AppHosts, verificar su estado, seguir sus logs y apagarlos — todo desde una sola sesión de terminal.&lt;/p&gt;
&lt;h2 id="combínalo-con-el-modo-aislado"&gt;Combínalo con el modo aislado&lt;/h2&gt;
&lt;p&gt;El modo desacoplado se combina naturalmente con el modo aislado. ¿Quieres ejecutar dos instancias del mismo proyecto en segundo plano sin conflictos de puertos?&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 uno obtiene puertos aleatorios, secretos separados y su propio ciclo de vida. Usa &lt;code&gt;aspire ps&lt;/code&gt; para ver ambos, &lt;code&gt;aspire stop&lt;/code&gt; para detener el que ya no necesites.&lt;/p&gt;
&lt;h2 id="por-qué-esto-es-enorme-para-los-agentes-de-código"&gt;Por qué esto es enorme para los agentes de código&lt;/h2&gt;
&lt;p&gt;Aquí es donde se pone realmente interesante. Un agente de código trabajando en tu terminal ahora puede:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Iniciar la app con &lt;code&gt;aspire start&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Consultar su estado con &lt;code&gt;aspire describe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Revisar logs con &lt;code&gt;aspire logs&lt;/code&gt; para diagnosticar problemas&lt;/li&gt;
&lt;li&gt;Detenerla con &lt;code&gt;aspire stop&lt;/code&gt; cuando termine&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Todo sin perder la sesión de terminal. Antes del modo desacoplado, un agente que ejecutara tu AppHost se bloqueaba a sí mismo en su propia terminal. Ahora puede iniciar, observar, iterar y limpiar — exactamente como querrías que funcione un agente autónomo.&lt;/p&gt;
&lt;p&gt;El equipo de Aspire se volcó en esto. Ejecutar &lt;code&gt;aspire agent init&lt;/code&gt; configura un archivo de habilidades de Aspire que enseña estos comandos a los agentes. Así, herramientas como el agente de código de Copilot pueden gestionar tus cargas de trabajo de Aspire directamente.&lt;/p&gt;
&lt;h2 id="para-cerrar"&gt;Para cerrar&lt;/h2&gt;
&lt;p&gt;El modo desacoplado es una mejora de flujo de trabajo disfrazada de un simple flag. Dejas de cambiar contexto entre terminales, los agentes dejan de bloquearse a sí mismos, y los nuevos comandos CLI te dan visibilidad real de lo que está en ejecución. Es práctico, es limpio, y hace que el ciclo de desarrollo diario sea notablemente más fluido.&lt;/p&gt;
&lt;p&gt;Lee el &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;post completo&lt;/a&gt; para todos los detalles y obtén Aspire 13.2 con &lt;code&gt;aspire update --self&lt;/code&gt;.&lt;/p&gt;</content:encoded></item><item><title>Docker Sandbox permite a los agentes de Copilot refactorizar tu código sin poner en riesgo tu máquina</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/</guid><description>Docker Sandbox ofrece a los agentes de GitHub Copilot una microVM segura donde pueden refactorizar sin límites — sin prompts de permisos, sin riesgos para tu host. Así es como esto cambia todo para la modernización de .NET a gran escala.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/copilot-docker-sandbox-agentic-refactoring/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si usaste el modo agente de Copilot para algo más que ediciones pequeñas, conocés el dolor. Cada escritura de archivo, cada comando en terminal — otro prompt de permisos. Ahora imaginá eso multiplicado por 50 proyectos. No es divertido.&lt;/p&gt;
&lt;p&gt;El equipo de Azure acaba de publicar un 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 de GitHub Copilot&lt;/a&gt;, y honestamente, es una de las mejoras más prácticas que he visto en herramientas agénticas. Usa microVMs para darle a Copilot un entorno completamente aislado donde puede hacer de todo — instalar paquetes, ejecutar builds, correr tests — sin tocar tu sistema host.&lt;/p&gt;
&lt;h2 id="qué-te-da-realmente-docker-sandbox"&gt;Qué te da realmente Docker Sandbox&lt;/h2&gt;
&lt;p&gt;La idea central es simple: levantar una microVM liviana con un entorno Linux completo, sincronizar tu workspace dentro de ella, y dejar que el agente de Copilot opere libremente adentro. Cuando termina, los cambios se sincronizan de vuelta.&lt;/p&gt;
&lt;p&gt;Esto es lo que lo hace más que simplemente &amp;ldquo;ejecutar cosas en un contenedor&amp;rdquo;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sincronización bidireccional del workspace&lt;/strong&gt; que preserva rutas absolutas. La estructura de tu proyecto se ve idéntica dentro del sandbox. Sin fallos de build por rutas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker daemon privado&lt;/strong&gt; corriendo dentro de la microVM. El agente puede construir y ejecutar contenedores sin montar jamás el socket de Docker de tu host. Eso es importante para la seguridad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proxies de filtrado HTTP/HTTPS&lt;/strong&gt; que controlan lo que el agente puede alcanzar en la red. Vos decidís qué registries y endpoints están permitidos. ¿Ataques a la cadena de suministro por un &lt;code&gt;npm install&lt;/code&gt; malicioso dentro del sandbox? Bloqueados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modo YOLO&lt;/strong&gt; — sí, así lo llaman. El agente corre sin prompts de permisos porque literalmente no puede dañar tu host. Toda acción destructiva está contenida.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="por-qué-los-desarrolladores-net-deberían-prestar-atención"&gt;Por qué los desarrolladores .NET deberían prestar atención&lt;/h2&gt;
&lt;p&gt;Pensá en el trabajo de modernización que tantos equipos están enfrentando ahora mismo. Tenés una solución .NET Framework con 30 proyectos, y necesitás moverla a .NET 9. Son cientos de cambios en archivos — archivos de proyecto, actualizaciones de namespaces, reemplazos de APIs, migraciones de NuGet.&lt;/p&gt;
&lt;p&gt;Con Docker Sandbox, podés apuntar un agente de Copilot a un proyecto, dejarlo refactorizar libremente dentro de la microVM, ejecutar &lt;code&gt;dotnet build&lt;/code&gt; y &lt;code&gt;dotnet test&lt;/code&gt; para validar, y solo aceptar los cambios que realmente funcionan. Sin riesgo de que accidentalmente destruya tu entorno de desarrollo local mientras experimenta.&lt;/p&gt;
&lt;p&gt;El post también describe ejecutar una &lt;strong&gt;flota de agentes en paralelo&lt;/strong&gt; — cada uno en su propio sandbox — trabajando en diferentes proyectos simultáneamente. Para soluciones .NET grandes o arquitecturas de microservicios, eso ahorra una cantidad enorme de tiempo. Un agente por servicio, todos corriendo aislados, todos validados independientemente.&lt;/p&gt;
&lt;h2 id="el-ángulo-de-seguridad-importa"&gt;El ángulo de seguridad importa&lt;/h2&gt;
&lt;p&gt;Acá está lo que la mayoría pasa por alto: cuando dejás que un agente de IA ejecute comandos arbitrarios, le estás confiando toda tu máquina. Docker Sandbox invierte ese modelo. El agente tiene autonomía total dentro de un entorno desechable. El proxy de red asegura que solo pueda descargar de fuentes aprobadas. Tu filesystem host, tu Docker daemon y tus credenciales quedan intactos.&lt;/p&gt;
&lt;p&gt;Para equipos con requisitos de compliance — y eso es la mayoría de las empresas .NET — esta es la diferencia entre &amp;ldquo;no podemos usar IA agéntica&amp;rdquo; y &amp;ldquo;podemos adoptarla de forma segura&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="conclusión"&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Docker Sandbox resuelve la tensión fundamental de la programación agéntica: los agentes necesitan libertad para ser útiles, pero libertad en tu máquina host es peligroso. Las microVMs te dan ambas cosas. Si estás planificando cualquier refactorización o modernización de .NET a gran escala, vale la pena configurar esto ahora. La combinación de la inteligencia de código de Copilot con un entorno de ejecución seguro es exactamente lo que los equipos de producción estaban esperando.&lt;/p&gt;</content:encoded></item><item><title>Las herramientas Azure MCP ahora vienen integradas en Visual Studio 2022 — Sin extensión necesaria</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/</guid><description>Las herramientas Azure MCP se incluyen como parte de la carga de trabajo de desarrollo Azure en Visual Studio 2022. Más de 230 herramientas, 45 servicios de Azure, cero extensiones que instalar.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este artículo fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/azure-mcp-tools-built-into-visual-studio-2022/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si has estado usando las herramientas Azure MCP en Visual Studio a través de la extensión separada, ya conoces el proceso — instalar el VSIX, reiniciar, cruzar los dedos para que no se rompa, gestionar incompatibilidades de versiones. Esa fricción se acabó.&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;anunció&lt;/a&gt; que las herramientas Azure MCP ahora se incluyen directamente como parte de la carga de trabajo de desarrollo Azure en Visual Studio 2022. Sin extensión. Sin VSIX. Sin el baile de reiniciar.&lt;/p&gt;
&lt;h2 id="qué-significa-esto-realmente"&gt;Qué significa esto realmente&lt;/h2&gt;
&lt;p&gt;A partir de Visual Studio 2022 versión 17.14.30, el Azure MCP Server viene incluido con la carga de trabajo de desarrollo Azure. Si ya tienes esa carga de trabajo instalada, solo necesitas activarlo en GitHub Copilot Chat y listo.&lt;/p&gt;
&lt;p&gt;Más de 230 herramientas en 45 servicios de Azure — accesibles directamente desde la ventana de chat. Lista tus cuentas de almacenamiento, despliega una app ASP.NET Core, diagnostica problemas en App Service, consulta Log Analytics — todo sin abrir una pestaña del navegador.&lt;/p&gt;
&lt;h2 id="por-qué-esto-importa-más-de-lo-que-parece"&gt;Por qué esto importa más de lo que parece&lt;/h2&gt;
&lt;p&gt;La cosa con las herramientas de desarrollo es esta: cada paso extra es fricción, y la fricción mata la adopción. Tener MCP como extensión separada significaba incompatibilidades de versiones, fallos en la instalación, y una cosa más que mantener actualizada. Integrarlo en la carga de trabajo significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Una sola vía de actualización&lt;/strong&gt; a través del Visual Studio Installer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin desviaciones de versión&lt;/strong&gt; entre la extensión y el IDE&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Siempre actualizado&lt;/strong&gt; — el MCP Server se actualiza con las versiones regulares de VS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para equipos que estandarizan en Azure, esto es muy importante. Instalas la carga de trabajo una vez, activas las herramientas, y están ahí para cada sesión.&lt;/p&gt;
&lt;h2 id="qué-puedes-hacer-con-esto"&gt;Qué puedes hacer con esto&lt;/h2&gt;
&lt;p&gt;Las herramientas cubren todo el ciclo de vida del desarrollo a través de Copilot Chat:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Aprender&lt;/strong&gt; — pregunta sobre servicios de Azure, buenas prácticas, patrones de arquitectura&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diseñar y desarrollar&lt;/strong&gt; — obtén recomendaciones de servicios, configura el código de tu aplicación&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desplegar&lt;/strong&gt; — aprovisiona recursos y despliega directamente desde el IDE&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solucionar problemas&lt;/strong&gt; — consulta logs, verifica el estado de los recursos, diagnostica problemas en producción&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un ejemplo rápido — escribe esto en 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;Copilot llama a las herramientas Azure MCP detrás de escena, consulta tus suscripciones, y devuelve una lista formateada con nombres, ubicaciones y SKUs. Sin necesidad del portal.&lt;/p&gt;
&lt;h2 id="cómo-activarlo"&gt;Cómo activarlo&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Actualiza a Visual Studio 2022 &lt;strong&gt;17.14.30&lt;/strong&gt; o superior&lt;/li&gt;
&lt;li&gt;Asegúrate de tener instalada la carga de trabajo &lt;strong&gt;Azure development&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Abre GitHub Copilot Chat&lt;/li&gt;
&lt;li&gt;Haz clic en el botón &lt;strong&gt;Select tools&lt;/strong&gt; (el icono de las dos llaves)&lt;/li&gt;
&lt;li&gt;Activa &lt;strong&gt;Azure MCP Server&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Eso es todo. Se mantiene activado entre sesiones.&lt;/p&gt;
&lt;h2 id="una-advertencia"&gt;Una advertencia&lt;/h2&gt;
&lt;p&gt;Las herramientas están desactivadas por defecto — necesitas activarlas manualmente. Y las herramientas específicas de VS 2026 no están disponibles en VS 2022. La disponibilidad de herramientas también depende de los permisos de tu suscripción de Azure, igual que en el portal.&lt;/p&gt;
&lt;h2 id="el-panorama-general"&gt;El panorama general&lt;/h2&gt;
&lt;p&gt;Esto es parte de una tendencia clara: MCP se está convirtiendo en el estándar para exponer herramientas de la nube en los IDEs de desarrollo. Ya hemos visto el &lt;a href="https://devblogs.microsoft.com/azure-sdk/announcing-azure-mcp-server-2-0-stable-release/"&gt;lanzamiento estable de Azure MCP Server 2.0&lt;/a&gt; e integraciones de MCP en VS Code y otros editores. Tenerlo integrado en el sistema de cargas de trabajo de Visual Studio es la progresión natural.&lt;/p&gt;
&lt;p&gt;Para los que somos desarrolladores .NET y vivimos en Visual Studio, esto elimina una razón más para cambiar de contexto al portal de Azure. Y sinceramente, mientras menos cambio de pestañas, mejor.&lt;/p&gt;</content:encoded></item><item><title>azd update — Un solo comando para gobernar todos tus gestores de paquetes</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/azd-update-universal-upgrade-command/</guid><description>Azure Developer CLI ahora tiene un comando de actualización universal que funciona sin importar cómo lo instalaste — winget, Homebrew, Chocolatey o script de instalación.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/azd-update-universal-upgrade-command/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Conoces ese mensaje de &amp;ldquo;Hay una nueva versión de azd disponible&amp;rdquo; que aparece cada pocas semanas? ¿Ese que ignoras porque no recuerdas si instalaste &lt;code&gt;azd&lt;/code&gt; con winget, Homebrew o ese script de curl que ejecutaste hace seis meses? Bueno, eso por fin tiene solución.&lt;/p&gt;
&lt;p&gt;Microsoft acaba de lanzar &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;&lt;code&gt;azd update&lt;/code&gt;&lt;/a&gt; — un único comando que actualiza Azure Developer CLI a la última versión sin importar cómo lo instalaste originalmente. Windows, macOS, Linux — da igual. Un solo comando.&lt;/p&gt;
&lt;h2 id="cómo-funciona"&gt;Cómo 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;Eso es todo. Si quieres acceso anticipado a nuevas funcionalidades, puedes cambiar a la build diaria 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;El comando detecta tu método de instalación actual y usa el mecanismo de actualización apropiado internamente. Se acabó el &amp;ldquo;espera, ¿usé winget o choco en esta máquina?&amp;rdquo;&lt;/p&gt;
&lt;h2 id="el-pequeño-detalle"&gt;El pequeño detalle&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd update&lt;/code&gt; viene a partir de la versión 1.23.x. Si estás en una versión anterior, necesitarás hacer una última actualización manual usando tu método de instalación original. Después de eso, &lt;code&gt;azd update&lt;/code&gt; se encarga de todo en adelante.&lt;/p&gt;
&lt;p&gt;Comprueba tu versión actual con &lt;code&gt;azd version&lt;/code&gt;. Si necesitas una instalación desde cero, la &lt;a href="https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd"&gt;documentación de instalación&lt;/a&gt; te cubre.&lt;/p&gt;
&lt;h2 id="por-qué-importa"&gt;Por qué importa&lt;/h2&gt;
&lt;p&gt;Es una pequeña mejora de calidad de vida, pero para los que usamos &lt;code&gt;azd&lt;/code&gt; a diario para desplegar agentes de IA y apps de Aspire en Azure, estar actualizado significa menos momentos de &amp;ldquo;ese bug ya estaba corregido en la última versión&amp;rdquo;. Una cosa menos en la que pensar.&lt;/p&gt;
&lt;p&gt;Lee el &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;anuncio completo&lt;/a&gt; y el &lt;a href="https://blog.jongallant.com/2026/04/azd-update"&gt;análisis más detallado&lt;/a&gt; de Jon Gallant para más contexto.&lt;/p&gt;</content:encoded></item><item><title>.NET Aspire 13.2 Quiere Ser el Mejor Amigo de Tu Agente de IA</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</guid><description>Aspire 13.2 apuesta todo por el desarrollo agéntico — salida CLI estructurada, ejecuciones aisladas, entornos auto-reparables y datos OpenTelemetry completos para que tus agentes de IA puedan realmente construir, ejecutar y observar tus apps.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Conoces ese momento cuando tu agente de IA escribe código sólido, te emocionas, y luego todo se desmorona cuando intenta &lt;em&gt;ejecutar&lt;/em&gt; la cosa? Conflictos de puertos, procesos fantasma, variables de entorno incorrectas — de repente tu agente está quemando tokens depurando problemas de arranque en vez de construir funcionalidades.&lt;/p&gt;
&lt;p&gt;El equipo de Aspire acaba de publicar un &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;post muy bien pensado&lt;/a&gt; sobre exactamente este problema, y su respuesta es convincente: Aspire 13.2 está diseñado no solo para humanos, sino para agentes de IA.&lt;/p&gt;
&lt;h2 id="el-problema-es-real"&gt;El problema es real&lt;/h2&gt;
&lt;p&gt;Los agentes de IA son increíbles escribiendo código. Pero enviar una app full-stack funcional involucra mucho más que generar archivos. Necesitas iniciar servicios en el orden correcto, gestionar puertos, configurar variables de entorno, conectar bases de datos y obtener retroalimentación cuando algo se rompe. Ahora mismo, la mayoría de agentes manejan todo esto por prueba y error — ejecutando comandos, leyendo errores, intentando de nuevo.&lt;/p&gt;
&lt;p&gt;Le metemos instrucciones en Markdown, skills personalizados y prompts para guiarlos, pero son impredecibles, no se pueden compilar y cuestan tokens solo para parsear. El equipo de Aspire dio en el clavo con la idea central: los agentes necesitan &lt;strong&gt;compiladores y APIs estructuradas&lt;/strong&gt;, no más Markdown.&lt;/p&gt;
&lt;h2 id="aspire-como-infraestructura-para-agentes"&gt;Aspire como infraestructura para agentes&lt;/h2&gt;
&lt;p&gt;Esto es lo que Aspire 13.2 trae a la mesa del desarrollo agéntico:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Todo tu stack en código tipado.&lt;/strong&gt; El AppHost define tu topología completa — API, frontend, base de datos, caché — en TypeScript o C# compilable:&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;Un agente puede leer esto para entender la topología de la app, agregar recursos, conectar componentes y &lt;em&gt;compilar para verificar&lt;/em&gt;. El compilador le dice inmediatamente si algo está mal. Sin adivinanzas, sin prueba y error con archivos de configuración.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Un solo comando para gobernarlos a todos.&lt;/strong&gt; En vez de que los agentes malabareen &lt;code&gt;docker compose up&lt;/code&gt;, &lt;code&gt;npm run dev&lt;/code&gt; y scripts de arranque de bases de datos, todo es simplemente &lt;code&gt;aspire start&lt;/code&gt;. Todos los recursos se lanzan en el orden correcto, en los puertos correctos, con la configuración correcta. Los procesos de larga duración tampoco cuelgan al agente — Aspire los gestiona.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modo aislado para agentes en paralelo.&lt;/strong&gt; Con &lt;code&gt;--isolated&lt;/code&gt;, cada ejecución de Aspire obtiene sus propios puertos aleatorios y secretos de usuario separados. ¿Tienes múltiples agentes trabajando en git worktrees? No colisionarán. Esto es enorme para herramientas como los agentes en segundo plano de VS Code que crean entornos paralelos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ojos de agente a través de telemetría.&lt;/strong&gt; Aquí es donde se pone realmente potente. El CLI de Aspire expone datos OpenTelemetry completos durante el desarrollo — trazas, métricas, logs estructurados. Tu agente no solo lee la salida de consola esperando lo mejor. Puede rastrear una petición fallida entre servicios, perfilar endpoints lentos e identificar exactamente dónde se rompen las cosas. Eso es observabilidad de nivel producción en el ciclo de desarrollo.&lt;/p&gt;
&lt;h2 id="la-analogía-de-los-parachoques-de-boliche"&gt;La analogía de los parachoques de boliche&lt;/h2&gt;
&lt;p&gt;El equipo de Aspire usa una gran analogía: piensa en Aspire como los parachoques de una pista de boliche para agentes de IA. Si el agente no es perfecto (y no lo será), los parachoques evitan que tire canaletas. La definición del stack previene mala configuración, el compilador atrapa errores, el CLI maneja la gestión de procesos y la telemetría provee el ciclo de retroalimentación.&lt;/p&gt;
&lt;p&gt;Combina esto con algo como Playwright CLI, y tu agente puede realmente &lt;em&gt;usar&lt;/em&gt; tu app — haciendo clic en flujos, revisando el DOM, viendo cosas rotas en telemetría, arreglando el código, reiniciando y probando de nuevo. Construir, ejecutar, observar, arreglar. Ese es el ciclo de desarrollo autónomo que hemos estado persiguiendo.&lt;/p&gt;
&lt;h2 id="primeros-pasos"&gt;Primeros pasos&lt;/h2&gt;
&lt;p&gt;¿Nuevo en Aspire? Instala el CLI desde &lt;a href="https://get.aspire.dev"&gt;get.aspire.dev&lt;/a&gt; y sigue la &lt;a href="https://aspire.dev/get-started/first-app"&gt;guía de inicio&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;¿Ya usas Aspire? Ejecuta &lt;code&gt;aspire update --self&lt;/code&gt; para obtener la 13.2, luego apunta tu agente de código favorito a tu repo. Te sorprenderá lo mucho más lejos que llega con los guardrails de Aspire.&lt;/p&gt;
&lt;h2 id="para-cerrar"&gt;Para cerrar&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 ya no es solo un framework para aplicaciones distribuidas — se está convirtiendo en infraestructura esencial para agentes. Definiciones de stack estructuradas, arranque con un comando, ejecuciones paralelas aisladas y telemetría en tiempo real le dan a los agentes de IA exactamente lo que necesitan para pasar de escribir código a enviar apps.&lt;/p&gt;
&lt;p&gt;Lee el &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;post completo&lt;/a&gt; del equipo de Aspire para todos los detalles y videos de demostración.&lt;/p&gt;</content:encoded></item><item><title>El Modo Aislado de Aspire Resuelve la Pesadilla de Conflictos de Puertos en Desarrollo Paralelo</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/</guid><description>Aspire 13.2 introduce el modo --isolated: puertos aleatorios, secretos separados y cero colisiones al ejecutar múltiples instancias del mismo AppHost. Perfecto para agentes de IA, worktrees y flujos de trabajo paralelos.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si alguna vez intentaste ejecutar dos instancias del mismo proyecto al mismo tiempo, conoces el dolor. El puerto 8080 ya está en uso. El puerto 17370 está ocupado. Mata algo, reinicia, malabarea variables de entorno — es un asesino de productividad.&lt;/p&gt;
&lt;p&gt;Este problema está empeorando, no mejorando. Los agentes de IA crean git worktrees para trabajar de forma independiente. Los agentes en segundo plano levantan entornos separados. Los desarrolladores hacen checkout del mismo repo dos veces para ramas de funcionalidades. Cada uno de estos escenarios choca con la misma pared: dos instancias de la misma app peleando por los mismos puertos.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 resuelve esto con un solo flag. James Newton-King del equipo de Aspire &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;escribió todos los detalles&lt;/a&gt;, y es una de esas funcionalidades de &amp;ldquo;¿por qué no teníamos esto antes?&amp;rdquo;&lt;/p&gt;
&lt;h2 id="la-solución---isolated"&gt;La solución: &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;Eso es todo. Cada ejecución obtiene:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Puertos aleatorios&lt;/strong&gt; — no más colisiones entre instancias&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secretos de usuario aislados&lt;/strong&gt; — cadenas de conexión y claves API permanecen separados por instancia&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sin reasignación manual de puertos. Sin malabarismo de variables de entorno. Cada ejecución obtiene un entorno limpio y libre de colisiones automáticamente.&lt;/p&gt;
&lt;h2 id="escenarios-reales-donde-esto-brilla"&gt;Escenarios reales donde esto brilla&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Múltiples checkouts.&lt;/strong&gt; Tienes una rama de funcionalidad en un directorio y un bugfix en otro:&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 se ejecutan sin conflictos. El dashboard muestra qué está corriendo y dónde.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agentes en segundo plano en VS Code.&lt;/strong&gt; Cuando el agente en background de Copilot Chat crea un git worktree para trabajar en tu código de forma independiente, puede necesitar ejecutar tu AppHost de Aspire. Sin &lt;code&gt;--isolated&lt;/code&gt;, eso es una colisión de puertos con tu worktree principal. Con él, ambas instancias simplemente funcionan.&lt;/p&gt;
&lt;p&gt;El skill de Aspire que viene con &lt;code&gt;aspire agent init&lt;/code&gt; instruye automáticamente a los agentes a usar &lt;code&gt;--isolated&lt;/code&gt; cuando trabajan en worktrees. Así que el agente en background de Copilot debería manejar esto de forma nativa.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tests de integración junto al desarrollo.&lt;/strong&gt; ¿Necesitas ejecutar tests contra un AppHost en vivo mientras sigues construyendo funcionalidades? El modo aislado le da a cada contexto sus propios puertos y configuración.&lt;/p&gt;
&lt;h2 id="cómo-funciona-internamente"&gt;Cómo funciona internamente&lt;/h2&gt;
&lt;p&gt;Cuando pasas &lt;code&gt;--isolated&lt;/code&gt;, el CLI genera un ID de instancia único para la ejecución. Esto impulsa dos comportamientos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aleatorización de puertos&lt;/strong&gt; — en vez de vincularse a puertos predecibles definidos en la configuración de tu AppHost, el modo aislado elige puertos aleatorios disponibles para todo — el dashboard, los endpoints de servicio, todo. El service discovery se ajusta automáticamente, así que los servicios se encuentran entre sí sin importar qué puertos les tocaron.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aislamiento de secretos&lt;/strong&gt; — cada ejecución aislada obtiene su propio almacén de secretos de usuario, identificado por el ID de instancia. Las cadenas de conexión y claves API de una ejecución no se filtran a otra.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tu código no necesita cambios. El service discovery de Aspire resuelve los endpoints en tiempo de ejecución, así que todo se conecta correctamente sin importar la asignación de puertos.&lt;/p&gt;
&lt;h2 id="cuándo-usarlo"&gt;Cuándo usarlo&lt;/h2&gt;
&lt;p&gt;Usa &lt;code&gt;--isolated&lt;/code&gt; cuando ejecutes múltiples instancias del mismo AppHost simultáneamente — ya sea desarrollo paralelo, tests automatizados, agentes de IA o git worktrees. Para desarrollo de instancia única donde prefieras puertos predecibles, el &lt;code&gt;aspire run&lt;/code&gt; regular sigue funcionando bien.&lt;/p&gt;
&lt;h2 id="para-cerrar"&gt;Para cerrar&lt;/h2&gt;
&lt;p&gt;El modo aislado es una funcionalidad pequeña que resuelve un problema real y cada vez más común. A medida que el desarrollo asistido por IA nos empuja hacia más flujos paralelos — múltiples agentes, múltiples worktrees, múltiples contextos — la capacidad de simplemente levantar otra instancia sin pelear por puertos es esencial.&lt;/p&gt;
&lt;p&gt;Lee el &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;post completo&lt;/a&gt; para todos los detalles técnicos y pruébalo con &lt;code&gt;aspire update --self&lt;/code&gt; para obtener la 13.2.&lt;/p&gt;</content:encoded></item><item><title>Esa Configuración de Ventanas Flotantes de Visual Studio Que No Conocías (Pero Deberías)</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/visual-studio-floating-windows-powertoys/</guid><description>Una configuración oculta de Visual Studio te da control total sobre las ventanas flotantes — entradas independientes en la barra de tareas, comportamiento adecuado con múltiples monitores e integración perfecta con FancyZones. Un desplegable lo cambia todo.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/visual-studio-floating-windows-powertoys/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si usas múltiples monitores con Visual Studio (y honestamente, ¿quién no lo hace hoy en día?), probablemente hayas experimentado la molestia: las ventanas flotantes de herramientas desaparecen cuando minimizas el IDE principal, siempre se quedan encima de todo lo demás, y no aparecen como botones separados en la barra de tareas. Funciona para algunos flujos de trabajo, pero para configuraciones con múltiples monitores es frustrante.&lt;/p&gt;
&lt;p&gt;Mads Kristensen del equipo de Visual Studio &lt;a href="https://devblogs.microsoft.com/visualstudio/take-full-control-of-your-floating-windows-in-visual-studio/"&gt;compartió una configuración poco conocida&lt;/a&gt; que cambia completamente cómo se comportan las ventanas flotantes. Un desplegable. Eso es todo.&lt;/p&gt;
&lt;h2 id="la-configuración"&gt;La configuración&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;El desplegable &amp;ldquo;These floating windows are owned by the main window&amp;rdquo; tiene tres opciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;None&lt;/strong&gt; — independencia total. Cada ventana flotante tiene su propia entrada en la barra de tareas y se comporta como una ventana normal de Windows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool Windows&lt;/strong&gt; (predeterminado) — los documentos flotan libremente, las ventanas de herramientas quedan vinculadas al IDE.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documents and Tool Windows&lt;/strong&gt; — comportamiento clásico de Visual Studio, todo vinculado a la ventana principal.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="por-qué-none-es-la-mejor-opción-para-configuraciones-con-múltiples-monitores"&gt;Por qué &amp;ldquo;None&amp;rdquo; es la mejor opción para configuraciones con múltiples monitores&lt;/h2&gt;
&lt;p&gt;Configúralo en &lt;strong&gt;None&lt;/strong&gt; y de repente todas tus ventanas flotantes de herramientas y documentos se comportan como aplicaciones reales de Windows. Aparecen en la barra de tareas, permanecen visibles cuando minimizas la ventana principal de Visual Studio, y dejan de forzarse al frente de todo.&lt;/p&gt;
&lt;p&gt;Combina esto con &lt;strong&gt;PowerToys FancyZones&lt;/strong&gt; y es un cambio total. Crea diseños personalizados a través de tus monitores, coloca tu Explorador de Soluciones en una zona, el depurador en otra, y los archivos de código donde quieras. Todo se mantiene en su lugar, todo es accesible de forma independiente, y tu espacio de trabajo se siente organizado en lugar de caótico.&lt;/p&gt;
&lt;h2 id="recomendaciones-rápidas"&gt;Recomendaciones rápidas&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Usuarios avanzados con múltiples monitores&lt;/strong&gt;: Configura en &lt;strong&gt;None&lt;/strong&gt;, combina con FancyZones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flotadores ocasionales&lt;/strong&gt;: &lt;strong&gt;Tool Windows&lt;/strong&gt; (predeterminado) es un buen punto medio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flujo de trabajo tradicional&lt;/strong&gt;: &lt;strong&gt;Documents and Tool Windows&lt;/strong&gt; mantiene todo clásico&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Consejo pro: &lt;strong&gt;Ctrl + doble clic&lt;/strong&gt; en la barra de título de cualquier ventana de herramientas para flotarla o anclarla instantáneamente. No se necesita reiniciar después de cambiar la configuración.&lt;/p&gt;
&lt;h2 id="conclusión"&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Es una de esas configuraciones de &amp;ldquo;no puedo creer que no lo sabía&amp;rdquo;. Si las ventanas flotantes en Visual Studio alguna vez te han molestado, ve a cambiar esto ahora mismo.&lt;/p&gt;
&lt;p&gt;Lee el &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 los detalles y capturas de pantalla.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.116 — La App de Agentes Obtiene Navegación por Teclado y Autocompletado de Contexto de Archivos</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/vscode-1-116-agents-app-updates/</guid><description>VS Code 1.116 se enfoca en pulir la app de Agentes — atajos de teclado dedicados, mejoras de accesibilidad, autocompletado de contexto de archivos y resolución de enlaces CSS @import.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/vscode-1-116-agents-app-updates/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;VS Code 1.116 es la versión de abril de 2026, y aunque es más ligera que algunas actualizaciones recientes, los cambios son enfocados y significativos — especialmente si estás usando la app de Agentes a diario.&lt;/p&gt;
&lt;p&gt;Esto es lo que llegó, basado en las &lt;a href="https://code.visualstudio.com/updates/v1_116"&gt;notas de la versión oficial&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="mejoras-en-la-app-de-agentes"&gt;Mejoras en la app de Agentes&lt;/h2&gt;
&lt;p&gt;La app de Agentes sigue madurando con pulido de usabilidad que marca una diferencia real en los flujos de trabajo diarios:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Atajos de teclado dedicados&lt;/strong&gt; — ahora puedes enfocar la vista de Cambios, el árbol de archivos dentro de Cambios, y la vista de Personalizaciones del Chat con comandos dedicados y atajos de teclado. Si has estado haciendo clic por toda la app de Agentes para navegar, esto trae flujos de trabajo completamente controlados por teclado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diálogo de ayuda de accesibilidad&lt;/strong&gt; — presionar &lt;code&gt;Alt+F1&lt;/code&gt; en el cuadro de entrada del chat ahora abre un diálogo de ayuda de accesibilidad que muestra los comandos y atajos disponibles. Los usuarios de lectores de pantalla también pueden controlar la verbosidad de los anuncios. La buena accesibilidad beneficia a todos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Autocompletado de contexto de archivos&lt;/strong&gt; — escribe &lt;code&gt;#&lt;/code&gt; en el chat de la app de Agentes para activar el autocompletado de contexto de archivos dentro de tu espacio de trabajo actual. Esta es una de esas pequeñas mejoras de calidad de vida que aceleran cada interacción — no más escribir rutas completas de archivos al referenciar código.&lt;/p&gt;
&lt;h2 id="resolución-de-enlaces-css-import"&gt;Resolución de enlaces CSS &lt;code&gt;@import&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Una buena para los desarrolladores frontend: VS Code ahora resuelve las referencias CSS &lt;code&gt;@import&lt;/code&gt; que usan rutas de node_modules. Puedes hacer &lt;code&gt;Ctrl+clic&lt;/code&gt; a través de imports como &lt;code&gt;@import &amp;quot;some-module/style.css&amp;quot;&lt;/code&gt; cuando usas bundlers. Pequeño pero elimina un punto de fricción en los flujos de trabajo CSS.&lt;/p&gt;
&lt;h2 id="conclusión"&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;VS Code 1.116 trata sobre refinamiento — hacer la app de Agentes más navegable, más accesible y más amigable con el teclado. Si pasas tiempo significativo en la app de Agentes (y sospecho que muchos de nosotros lo hacemos), estos cambios se acumulan.&lt;/p&gt;
&lt;p&gt;Revisa las &lt;a href="https://code.visualstudio.com/updates/v1_116"&gt;notas de la versión completas&lt;/a&gt; para la lista completa.&lt;/p&gt;</content:encoded></item><item><title>VS Code 1.115 — Notificaciones de Terminal en Segundo Plano, Modo Agente SSH y Más</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/vscode-1-115-agent-improvements/</guid><description>VS Code 1.115 trae notificaciones de terminal en segundo plano para agentes, hosting remoto de agentes por SSH, pegado de archivos en terminales y seguimiento de ediciones con reconocimiento de sesión. Esto es lo que importa para desarrolladores .NET.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/vscode-1-115-agent-improvements/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;VS Code 1.115 acaba de &lt;a href="https://code.visualstudio.com/updates/v1_115"&gt;lanzarse&lt;/a&gt;, y aunque es una versión más ligera en cuanto a funcionalidades destacadas, las mejoras relacionadas con agentes son genuinamente útiles si trabajás con asistentes de código con IA todos los días.&lt;/p&gt;
&lt;p&gt;Déjame resaltar lo que realmente vale la pena saber.&lt;/p&gt;
&lt;h2 id="las-terminales-en-segundo-plano-ahora-se-comunican-con-los-agentes"&gt;Las terminales en segundo plano ahora se comunican con los agentes&lt;/h2&gt;
&lt;p&gt;Esta es la funcionalidad estrella. Las terminales en segundo plano ahora notifican automáticamente a los agentes cuando los comandos terminan, incluyendo el código de salida y la salida de la terminal. Las solicitudes de entrada en terminales en segundo plano también se detectan y se muestran al usuario.&lt;/p&gt;
&lt;p&gt;¿Por qué importa esto? Si usaste el modo agente de Copilot para ejecutar comandos de compilación o suites de tests en segundo plano, conocés el dolor del &amp;ldquo;¿ya terminó eso?&amp;rdquo; — las terminales en segundo plano eran básicamente disparar-y-olvidar. Ahora el agente recibe una notificación cuando tu &lt;code&gt;dotnet build&lt;/code&gt; o &lt;code&gt;dotnet test&lt;/code&gt; termina, ve la salida y puede reaccionar en consecuencia. Es un cambio pequeño que hace que los flujos de trabajo impulsados por agentes sean significativamente más confiables.&lt;/p&gt;
&lt;p&gt;También hay una nueva herramienta &lt;code&gt;send_to_terminal&lt;/code&gt; que permite a los agentes enviar comandos a terminales en segundo plano con confirmación del usuario, solucionando el problema donde &lt;code&gt;run_in_terminal&lt;/code&gt; con un timeout movía las terminales al segundo plano y las dejaba como solo lectura.&lt;/p&gt;
&lt;h2 id="hosting-remoto-de-agentes-por-ssh"&gt;Hosting remoto de agentes por SSH&lt;/h2&gt;
&lt;p&gt;VS Code ahora soporta conectarse a máquinas remotas por SSH, instalando automáticamente el CLI e iniciándolo en modo host de agentes. Esto significa que tus sesiones de agentes de IA pueden apuntar a entornos remotos directamente — útil para desarrolladores .NET que compilan y prueban en servidores Linux o VMs en la nube.&lt;/p&gt;
&lt;h2 id="seguimiento-de-ediciones-en-sesiones-de-agentes"&gt;Seguimiento de ediciones en sesiones de agentes&lt;/h2&gt;
&lt;p&gt;Las ediciones de archivos realizadas durante sesiones de agentes ahora se rastrean y restauran, con diffs, deshacer/rehacer y restauración de estado. Si un agente hace cambios en tu código y algo sale mal, podés ver exactamente qué cambió y revertirlo. Tranquilidad para dejar que los agentes modifiquen tu codebase.&lt;/p&gt;
&lt;h2 id="reconocimiento-de-pestañas-del-navegador-y-otras-mejoras"&gt;Reconocimiento de pestañas del navegador y otras mejoras&lt;/h2&gt;
&lt;p&gt;Algunas mejoras adicionales de calidad de vida:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Seguimiento de pestañas del navegador&lt;/strong&gt; — el chat ahora puede rastrear y enlazar a pestañas del navegador abiertas durante una sesión, para que los agentes puedan referenciar páginas web que estás viendo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pegado de archivos en la terminal&lt;/strong&gt; — pegá archivos (incluyendo imágenes) en la terminal con Ctrl+V, arrastrar y soltar, o clic derecho&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cobertura de tests en el minimapa&lt;/strong&gt; — los indicadores de cobertura de tests ahora se muestran en el minimapa para una vista visual rápida&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pellizcar para zoom en Mac&lt;/strong&gt; — el navegador integrado soporta gestos de pellizcar para zoom&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Derechos de Copilot en Sesiones&lt;/strong&gt; — la barra de estado muestra información de uso en la vista de Sesiones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Favicon en Ir a Archivo&lt;/strong&gt; — las páginas web abiertas muestran favicons en la lista de selección rápida&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusión"&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;VS Code 1.115 es una versión incremental, pero las mejoras de agentes — notificaciones de terminal en segundo plano, hosting de agentes por SSH y seguimiento de ediciones — se suman a una experiencia notablemente más fluida para el desarrollo asistido por IA. Si estás usando el modo agente de Copilot para proyectos .NET, estos son el tipo de mejoras de calidad de vida que reducen la fricción diaria.&lt;/p&gt;
&lt;p&gt;Mirá las &lt;a href="https://code.visualstudio.com/updates/v1_115"&gt;notas de la versión completas&lt;/a&gt; para cada detalle.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2 incluye una CLI de documentación — y tu agente de IA también puede usarla</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</guid><description>.NET Aspire 13.2 añade aspire docs — una CLI para buscar, explorar y leer documentación oficial sin salir de tu terminal. También funciona como herramienta para agentes de IA. Te cuento por qué esto importa.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/aspire-docs-cli-ai-skills/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;¿Conocés ese momento cuando estás metido hasta el cuello en un Aspire AppHost, conectando integraciones, y necesitás verificar exactamente qué parámetros espera la integración de Redis? Hacés alt-tab al navegador, buscás por aspire.dev, entrecerrás los ojos mirando los docs de la API, y volvés a tu editor. Contexto perdido. Flujo roto.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 acaba de &lt;a href="https://devblogs.microsoft.com/aspire/aspire-docs-in-your-terminal/"&gt;lanzar una solución para eso&lt;/a&gt;. La CLI &lt;code&gt;aspire docs&lt;/code&gt; te permite buscar, explorar y leer documentación oficial de Aspire directamente desde tu terminal. Y como está respaldada por servicios reutilizables, los agentes de IA y skills pueden usar los mismos comandos para consultar docs en lugar de alucinar APIs que no existen.&lt;/p&gt;
&lt;h2 id="el-problema-que-esto-realmente-resuelve"&gt;El problema que esto realmente resuelve&lt;/h2&gt;
&lt;p&gt;David Pine lo clava en el post original: los agentes de IA eran &lt;em&gt;terribles&lt;/em&gt; ayudando a los desarrolladores a construir apps con Aspire. Recomendaban &lt;code&gt;dotnet run&lt;/code&gt; en vez de &lt;code&gt;aspire run&lt;/code&gt;, referenciaban learn.microsoft.com para docs que viven en aspire.dev, sugerían paquetes NuGet desactualizados, y — mi favorito personal — alucinaban APIs que no existen.&lt;/p&gt;
&lt;p&gt;¿Por qué? Porque Aspire fue específico de .NET por mucho más tiempo del que lleva siendo políglota, y los LLMs trabajan con datos de entrenamiento que preceden las últimas funcionalidades. Cuando le das a un agente de IA la capacidad de buscar los docs actuales, deja de adivinar y empieza a ser útil.&lt;/p&gt;
&lt;h2 id="tres-comandos-cero-pestañas-del-navegador"&gt;Tres comandos, cero pestañas del navegador&lt;/h2&gt;
&lt;p&gt;La CLI es refrescantemente simple:&lt;/p&gt;
&lt;h3 id="listar-todos-los-docs"&gt;Listar todos los 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;Devuelve cada página de documentación disponible en aspire.dev. ¿Necesitás salida legible por máquina? Agregá &lt;code&gt;--format Json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="buscar-un-tema"&gt;Buscar un tema&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;Busca tanto en títulos como en contenido con puntuación de relevancia ponderada. El mismo motor de búsqueda que alimenta la herramienta de documentación internamente. Obtenés resultados rankeados con títulos, slugs y puntuaciones de relevancia.&lt;/p&gt;
&lt;h3 id="leer-una-página-completa-o-solo-una-sección"&gt;Leer una página completa (o solo una sección)&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Transmite la página completa como markdown a tu terminal. ¿Necesitás solo una sección?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs 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;Precisión quirúrgica. Sin hacer scroll por 500 líneas. Solo la parte que necesitás.&lt;/p&gt;
&lt;h2 id="el-ángulo-del-agente-de-ia"&gt;El ángulo del agente de IA&lt;/h2&gt;
&lt;p&gt;Acá es donde se pone interesante para los que desarrollamos con herramientas de IA. Los mismos comandos de &lt;code&gt;aspire docs&lt;/code&gt; funcionan como herramientas para agentes de IA — a través de skills, servidores MCP, o wrappers simples de CLI.&lt;/p&gt;
&lt;p&gt;En vez de que tu asistente de IA invente APIs de Aspire basándose en datos de entrenamiento obsoletos, puede llamar a &lt;code&gt;aspire docs search &amp;quot;postgres&amp;quot;&lt;/code&gt;, encontrar los docs oficiales de integración, leer la página correcta, y darte el enfoque documentado. Documentación en tiempo real y actual — no lo que el modelo memorizó hace seis meses.&lt;/p&gt;
&lt;p&gt;La arquitectura detrás de esto es intencional. El equipo de Aspire construyó servicios reutilizables (&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;) en lugar de una integración única. Eso significa que el mismo motor de búsqueda funciona para humanos en la terminal, agentes de IA en tu editor, y automatización en tu pipeline de CI.&lt;/p&gt;
&lt;h2 id="escenarios-del-mundo-real"&gt;Escenarios del mundo real&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Consultas rápidas en terminal:&lt;/strong&gt; Estás tres archivos adentro y necesitás los parámetros de configuración de Redis. Dos comandos, noventa segundos, de vuelta al trabajo:&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;Desarrollo asistido por IA:&lt;/strong&gt; Tu skill de VS Code envuelve los comandos de la CLI. Preguntás &amp;ldquo;Agregá una base de datos PostgreSQL a mi AppHost&amp;rdquo; y el agente busca los docs reales antes de responder. Sin alucinaciones.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Validación en CI/CD:&lt;/strong&gt; Tu pipeline valida configuraciones de AppHost contra documentación oficial de forma programática. La salida &lt;code&gt;--format Json&lt;/code&gt; se conecta limpiamente con &lt;code&gt;jq&lt;/code&gt; y otras herramientas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bases de conocimiento personalizadas:&lt;/strong&gt; ¿Estás construyendo tu propia herramienta de IA? Enviá la salida JSON estructurada directamente a tu base de conocimiento:&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;Sin web scraping. Sin API keys. Los mismos datos estructurados que usa internamente la herramienta de documentación.&lt;/p&gt;
&lt;h2 id="la-documentación-siempre-está-actualizada"&gt;La documentación siempre está actualizada&lt;/h2&gt;
&lt;p&gt;Esta es la parte que más aprecio. La CLI no descarga una captura estática — consulta aspire.dev con caché basado en ETag. En el momento en que los docs se actualizan, tu CLI y cualquier skill construido sobre ella lo refleja. Sin copias obsoletas, sin momentos de &amp;ldquo;pero el wiki decía&amp;hellip;&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="para-cerrar"&gt;Para cerrar&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;aspire docs&lt;/code&gt; es una de esas funcionalidades pequeñas que resuelve un problema real de forma limpia. Los humanos obtienen acceso a documentación nativa de terminal. Los agentes de IA obtienen una forma de dejar de adivinar y empezar a referenciar docs reales. Y todo está respaldado por la misma fuente de verdad.&lt;/p&gt;
&lt;p&gt;Si estás construyendo con .NET Aspire y todavía no probaste la CLI, ejecutá &lt;code&gt;aspire docs search &amp;quot;tu-tema-aquí&amp;quot;&lt;/code&gt; y fijate cómo se siente. Después considerá envolver esos comandos en cualquier skill de IA o configuración de automatización que estés usando — tus agentes te lo van a agradecer.&lt;/p&gt;
&lt;p&gt;Mirá el &lt;a href="https://davidpine.dev/posts/aspire-docs-mcp-tools/"&gt;análisis profundo de David Pine&lt;/a&gt; sobre cómo se armó la herramienta de documentación, y la &lt;a href="https://aspire.dev/reference/cli/commands/aspire-docs/"&gt;referencia oficial de la CLI&lt;/a&gt; para todos los detalles.&lt;/p&gt;</content:encoded></item><item><title>azd ahora te permite ejecutar y depurar agentes IA localmente — Esto es lo que cambió en marzo 2026</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/</guid><description>El Azure Developer CLI publicó siete versiones en marzo 2026. Lo destacado: un bucle local de ejecución y depuración para agentes IA, integración con GitHub Copilot en la configuración de proyectos, y soporte para Container App Jobs.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Siete versiones en un mes. Eso es lo que el equipo del Azure Developer CLI (&lt;code&gt;azd&lt;/code&gt;) publicó en marzo 2026, y la función estrella es la que estaba esperando: &lt;strong&gt;un bucle local de ejecución y depuración 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;publicó el resumen completo&lt;/a&gt;, y aunque hay mucho contenido, déjame filtrarlo a lo que realmente importa para desarrolladores .NET que construyen apps con IA.&lt;/p&gt;
&lt;h2 id="ejecutar-y-depurar-agentes-ia-sin-desplegar"&gt;Ejecutar y depurar agentes IA sin desplegar&lt;/h2&gt;
&lt;p&gt;Esta es la grande. La nueva extensión &lt;code&gt;azure.ai.agents&lt;/code&gt; añade un conjunto de comandos que te dan una experiencia de bucle interno adecuada para agentes IA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;azd ai agent run&lt;/code&gt; — inicia tu agente localmente&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent invoke&lt;/code&gt; — le envía mensajes (local o desplegado)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent show&lt;/code&gt; — muestra el estado del contenedor y su salud&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent monitor&lt;/code&gt; — transmite logs del contenedor en tiempo real&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Antes, probar un agente IA significaba desplegarlo en Microsoft Foundry cada vez que hacías un cambio. Ahora puedes iterar localmente, probar el comportamiento de tu agente, y solo desplegarlo cuando estés listo. Si has estado construyendo agentes con el Microsoft Agent Framework o Semantic Kernel, esto cambia tu flujo de trabajo diario.&lt;/p&gt;
&lt;p&gt;El comando invoke funciona tanto contra agentes locales como desplegados, lo que significa que puedes usar el mismo flujo de pruebas sin importar dónde esté corriendo el agente. Ese es el tipo de detalle que te ahorra mantener dos conjuntos de scripts de prueba.&lt;/p&gt;
&lt;h2 id="github-copilot-configura-tu-proyecto-azd"&gt;GitHub Copilot configura tu proyecto azd&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd init&lt;/code&gt; ahora ofrece una opción &amp;ldquo;Set up with GitHub Copilot (Preview)&amp;rdquo;. En lugar de responder prompts manualmente sobre la estructura de tu proyecto, un agente Copilot genera la configuración por ti. Verifica que el directorio de trabajo esté limpio antes de modificar archivos y pide consentimiento de herramientas MCP por adelantado.&lt;/p&gt;
&lt;p&gt;Cuando un comando falla, &lt;code&gt;azd&lt;/code&gt; ahora ofrece troubleshooting asistido por IA: elige una categoría (explicar, guiar, solucionar o saltar), deja que el agente sugiera una corrección, y reintenta — todo sin salir de la terminal. Para configuraciones de infraestructura complejas, eso ahorra tiempo real.&lt;/p&gt;
&lt;h2 id="container-app-jobs-y-mejoras-de-despliegue"&gt;Container App Jobs y mejoras de despliegue&lt;/h2&gt;
&lt;p&gt;Algunas funciones de despliegue que vale la pena mencionar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Container App Jobs&lt;/strong&gt;: &lt;code&gt;azd&lt;/code&gt; ahora despliega &lt;code&gt;Microsoft.App/jobs&lt;/code&gt; a través de la configuración existente &lt;code&gt;host: containerapp&lt;/code&gt;. Tu plantilla Bicep determina si el destino es un Container App o un Job — sin configuración extra.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timeouts configurables&lt;/strong&gt;: Nueva flag &lt;code&gt;--timeout&lt;/code&gt; en &lt;code&gt;azd deploy&lt;/code&gt; y un campo &lt;code&gt;deployTimeout&lt;/code&gt; en &lt;code&gt;azure.yaml&lt;/code&gt;. Sin más adivinanzas sobre el límite predeterminado de 1200 segundos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fallback de build remoto&lt;/strong&gt;: Cuando falla el build remoto en ACR, &lt;code&gt;azd&lt;/code&gt; hace fallback automático a Docker/Podman local.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validación preflight local&lt;/strong&gt;: Los parámetros de Bicep se validan localmente antes de desplegar, detectando parámetros faltantes sin un viaje de ida y vuelta a Azure.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="pulido-en-la-experiencia-de-desarrollador"&gt;Pulido en la experiencia de desarrollador&lt;/h2&gt;
&lt;p&gt;Algunas mejoras más pequeñas que se suman:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Detección automática de pnpm/yarn&lt;/strong&gt; para proyectos JS/TS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Soporte para pyproject.toml&lt;/strong&gt; para paquetes Python&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Directorios de plantillas locales&lt;/strong&gt; — &lt;code&gt;azd init --template&lt;/code&gt; ahora acepta rutas del sistema de archivos para iteración offline&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mejores mensajes de error&lt;/strong&gt; en modo &lt;code&gt;--no-prompt&lt;/code&gt; — todos los valores faltantes reportados de una vez con comandos de resolución&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Variables de entorno de build&lt;/strong&gt; inyectadas en todos los subprocesos de build (.NET, Node.js, Java, Python)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La última es sutil pero importante: tu build .NET ahora tiene acceso a las variables de entorno de &lt;code&gt;azd&lt;/code&gt;, lo que significa que puedes hacer inyección de configuración en tiempo de compilación sin scripting adicional.&lt;/p&gt;
&lt;h2 id="para-cerrar"&gt;Para cerrar&lt;/h2&gt;
&lt;p&gt;El bucle de depuración local de agentes IA es la estrella de esta versión, pero la acumulación de mejoras de despliegue y refinamiento de DX hace que &lt;code&gt;azd&lt;/code&gt; se sienta más maduro que nunca. Si estás desplegando apps .NET en Azure — especialmente agentes IA — esta actualización vale la pena.&lt;/p&gt;
&lt;p&gt;Revisa las &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-march-2026/"&gt;notas completas de la versión&lt;/a&gt; para todos los detalles, o comienza con &lt;a href="https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd"&gt;la instalación de azd&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Azure DevOps por fin arregla el editor Markdown que todos odiaban</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/azure-devops-markdown-editor-work-items/</guid><description>El editor Markdown de Azure DevOps para work items ahora tiene una distinción clara entre modo vista previa y edición. Es un cambio pequeño que arregla un problema de UX genuinamente molesto.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/azure-devops-markdown-editor-work-items/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si usas Azure Boards, probablemente has vivido esto: estás leyendo la descripción de un work item, tal vez revisando los criterios de aceptación, y accidentalmente haces doble clic. Boom — estás en modo edición. No querías editar nada. Solo estabas leyendo.&lt;/p&gt;
&lt;p&gt;Dan Hellem &lt;a href="https://devblogs.microsoft.com/devops/improving-the-markdown-editor-for-work-items/"&gt;anunció la corrección&lt;/a&gt;, y es uno de esos cambios que suenan pequeños pero realmente eliminan fricción de tu flujo de trabajo diario.&lt;/p&gt;
&lt;h2 id="qué-cambió"&gt;Qué cambió&lt;/h2&gt;
&lt;p&gt;El editor Markdown para campos de texto de work items ahora abre en &lt;strong&gt;modo vista previa por defecto&lt;/strong&gt;. Puedes leer e interactuar con el contenido — seguir enlaces, revisar formato — sin preocuparte por entrar accidentalmente en modo edición.&lt;/p&gt;
&lt;p&gt;Cuando realmente quieres editar, haces clic en el ícono de edición en la parte superior del campo. Cuando terminas, sales explícitamente al modo vista previa. Simple, intencional, predecible.&lt;/p&gt;
&lt;p&gt;Eso es. Ese es el cambio.&lt;/p&gt;
&lt;h2 id="por-qué-importa-más-de-lo-que-parece"&gt;Por qué importa más de lo que parece&lt;/h2&gt;
&lt;p&gt;El &lt;a href="https://developercommunity.visualstudio.com/t/Markdown-editor-for-work-item-multi-line/10935496"&gt;hilo de feedback de la comunidad&lt;/a&gt; sobre esto era largo. El comportamiento de doble clic para editar se introdujo con el editor Markdown en julio 2025, y las quejas empezaron casi inmediatamente. El problema no eran solo las ediciones accidentales — era que toda la interacción se sentía impredecible.&lt;/p&gt;
&lt;p&gt;Para equipos que hacen planificación de sprints, refinamiento de backlog o revisión de código con Azure Boards, este tipo de micro-fricción se acumula. Cada entrada accidental al modo edición es un cambio de contexto. Cada momento de &amp;ldquo;espera, ¿cambié algo?&amp;rdquo; es atención desperdiciada.&lt;/p&gt;
&lt;h2 id="estado-del-despliegue"&gt;Estado del despliegue&lt;/h2&gt;
&lt;p&gt;Ya se está implementando para un subconjunto de clientes y se expandirá a todos en las próximas dos o tres semanas.&lt;/p&gt;
&lt;h2 id="para-cerrar"&gt;Para cerrar&lt;/h2&gt;
&lt;p&gt;No toda mejora necesita ser una función titular. A veces la mejor actualización es simplemente eliminar algo molesto. Esta es una de esas — una pequeña corrección de UX que hace que Azure Boards se sienta menos hostil para las personas que solo quieren leer sus work items en paz.&lt;/p&gt;</content:encoded></item><item><title>Bookmark Studio trae navegación por slots y compartir a los marcadores de Visual Studio</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/bookmark-studio-visual-studio-extension/</guid><description>La nueva extensión Bookmark Studio de Mads Kristensen añade navegación por slots con teclado, un gestor de marcadores, colores, etiquetas y capacidades de exportación a Visual Studio.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/bookmark-studio-visual-studio-extension/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Los marcadores en Visual Studio siempre han sido&amp;hellip; aceptables. Pones uno, navegas al siguiente, olvidas cuál es cuál. Funcionan, pero nunca han sido una función que llamarías poderosa.&lt;/p&gt;
&lt;p&gt;Mads Kristensen acaba de &lt;a href="https://devblogs.microsoft.com/visualstudio/bookmark-studio-evolving-bookmarks-in-visual-studio/"&gt;lanzar Bookmark Studio&lt;/a&gt;, una extensión experimental que llena exactamente los vacíos que probablemente has encontrado si usas marcadores regularmente.&lt;/p&gt;
&lt;h2 id="navegación-por-slots"&gt;Navegación por slots&lt;/h2&gt;
&lt;p&gt;Los marcadores se pueden asignar a slots del 1 al 9 y saltar directamente con &lt;code&gt;Alt+Shift+1&lt;/code&gt; hasta &lt;code&gt;Alt+Shift+9&lt;/code&gt;. Los nuevos marcadores obtienen automáticamente el siguiente slot disponible.&lt;/p&gt;
&lt;h2 id="el-gestor-de-marcadores"&gt;El Gestor de Marcadores&lt;/h2&gt;
&lt;p&gt;Una nueva ventana de herramientas muestra todos tus marcadores en un solo lugar con filtrado por nombre, archivo, ubicación, color o slot.&lt;/p&gt;
&lt;h2 id="organización-con-etiquetas-colores-y-carpetas"&gt;Organización con etiquetas, colores y carpetas&lt;/h2&gt;
&lt;p&gt;Los marcadores pueden tener opcionalmente etiquetas, colores y agruparse en carpetas. Toda la metadata se almacena por solución.&lt;/p&gt;
&lt;h2 id="exportar-y-compartir"&gt;Exportar y compartir&lt;/h2&gt;
&lt;p&gt;Bookmark Studio permite exportar marcadores como texto plano, Markdown o CSV. Puedes incluir rutas de marcadores en descripciones de PR o compartir caminos de investigación con compañeros.&lt;/p&gt;
&lt;h2 id="marcadores-que-siguen-al-código"&gt;Marcadores que siguen al código&lt;/h2&gt;
&lt;p&gt;Bookmark Studio rastrea los marcadores relativos al texto al que están anclados, así que no se desplazan a líneas incorrectas mientras editas.&lt;/p&gt;
&lt;h2 id="para-cerrar"&gt;Para cerrar&lt;/h2&gt;
&lt;p&gt;Bookmark Studio no reinventa nada. Toma una función que ha sido &amp;ldquo;suficiente&amp;rdquo; durante años y la hace genuinamente útil. Descárgalo del &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>La actualización de marzo de Visual Studio te permite crear agentes Copilot personalizados — y find_symbol es clave</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/visual-studio-march-2026-custom-copilot-agents/</guid><description>La actualización de marzo 2026 de Visual Studio trae agentes Copilot personalizados, skills reutilizables, la herramienta find_symbol con reconocimiento de lenguaje, y profiling con Copilot desde Test Explorer.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Este post fue traducido automáticamente. Para la versión original, &lt;a href="https://thedotnetblog.com/es/news/emiliano-montesdeoca/visual-studio-march-2026-custom-copilot-agents/"&gt;haz clic aquí&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Visual Studio acaba de recibir su actualización de Copilot más significativa hasta ahora. Mark Downie &lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-march-update-build-your-own-custom-agents/"&gt;anunció la versión de marzo&lt;/a&gt;, y el titular son los agentes personalizados — pero honestamente, la herramienta &lt;code&gt;find_symbol&lt;/code&gt; podría ser la función que más cambie tu flujo de trabajo.&lt;/p&gt;
&lt;h2 id="agentes-copilot-personalizados-en-tu-repo"&gt;Agentes Copilot personalizados en tu repo&lt;/h2&gt;
&lt;p&gt;¿Quieres que Copilot siga los estándares de código de tu equipo, ejecute tu pipeline de build, o consulte tus docs internos? Ahora puedes construir exactamente eso.&lt;/p&gt;
&lt;p&gt;Los agentes personalizados se definen como archivos &lt;code&gt;.agent.md&lt;/code&gt; que colocas en &lt;code&gt;.github/agents/&lt;/code&gt; en tu repositorio. Cada agente tiene acceso completo al workspace, comprensión del código, herramientas, tu modelo preferido, y conexiones MCP a servicios externos.&lt;/p&gt;
&lt;h2 id="agent-skills-paquetes-de-instrucciones-reutilizables"&gt;Agent skills: paquetes de instrucciones reutilizables&lt;/h2&gt;
&lt;p&gt;Los skills se cargan automáticamente desde &lt;code&gt;.github/skills/&lt;/code&gt; en tu repo o &lt;code&gt;~/.copilot/skills/&lt;/code&gt; en tu perfil. Piensa en los skills como experiencia modular que puedes mezclar y combinar.&lt;/p&gt;
&lt;h2 id="find_symbol-navegación-con-reconocimiento-de-lenguaje"&gt;find_symbol: navegación con reconocimiento de lenguaje&lt;/h2&gt;
&lt;p&gt;La nueva herramienta &lt;code&gt;find_symbol&lt;/code&gt; le da al modo agente de Copilot navegación de símbolos basada en servicios de lenguaje. En lugar de buscar texto, el agente puede encontrar todas las referencias a un símbolo, acceder a información de tipos, declaraciones y alcance.&lt;/p&gt;
&lt;p&gt;Para desarrolladores .NET, esto es una mejora enorme — las bases de código C# con jerarquías de tipos profundas e interfaces se benefician enormemente.&lt;/p&gt;
&lt;h2 id="perfilar-tests-con-copilot"&gt;Perfilar tests con Copilot&lt;/h2&gt;
&lt;p&gt;Hay un nuevo comando &lt;strong&gt;Profile with Copilot&lt;/strong&gt; en el menú contextual del Test Explorer. Selecciona un test, haz clic en perfilar, y el Profiling Agent lo ejecuta y analiza automáticamente.&lt;/p&gt;
&lt;h2 id="perf-tips-durante-debugging-en-vivo"&gt;Perf tips durante debugging en vivo&lt;/h2&gt;
&lt;p&gt;La optimización de rendimiento ahora ocurre mientras depuras. Visual Studio muestra tiempo de ejecución y señales de rendimiento inline. ¿Ves una línea lenta? Haz clic en el Perf Tip y pídele a Copilot sugerencias de optimización.&lt;/p&gt;
&lt;h2 id="corregir-vulnerabilidades-de-nuget-desde-solution-explorer"&gt;Corregir vulnerabilidades de NuGet desde Solution Explorer&lt;/h2&gt;
&lt;p&gt;Cuando se detecta una vulnerabilidad en un paquete NuGet, verás un enlace &lt;strong&gt;Fix with GitHub Copilot&lt;/strong&gt; directamente en Solution Explorer.&lt;/p&gt;
&lt;h2 id="para-cerrar"&gt;Para cerrar&lt;/h2&gt;
&lt;p&gt;Agentes personalizados y skills son el titular, pero &lt;code&gt;find_symbol&lt;/code&gt; es la joya oculta — cambia fundamentalmente la precisión de Copilot al refactorizar código .NET. Combinado con profiling en vivo y corrección de vulnerabilidades, esta actualización hace que las funciones de IA de Visual Studio se sientan genuinamente prácticas.&lt;/p&gt;
&lt;p&gt;Descarga &lt;a href="https://visualstudio.microsoft.com/downloads/"&gt;Visual Studio 2026 Insiders&lt;/a&gt; para probarlo todo.&lt;/p&gt;</content:encoded></item><item><title>Del portátil a producción: desplegando agentes de IA en Microsoft Foundry con dos comandos</title><link>https://thedotnetblog.com/es/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/es/news/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/</guid><description>El Azure Developer CLI ahora tiene comandos 'azd ai agent' que llevan tu agente de IA desde el desarrollo local a un endpoint en Foundry en minutos. Aquí está el flujo de trabajo completo.</description><content:encoded>&lt;p&gt;¿Conoces esa brecha entre &amp;ldquo;funciona en mi máquina&amp;rdquo; y &amp;ldquo;está desplegado y sirviendo tráfico&amp;rdquo;? Para agentes de IA, esa brecha ha sido dolorosamente amplia. Necesitas provisionar recursos, desplegar modelos, configurar identidad, montar monitoreo — y eso es antes de que alguien pueda realmente llamar a tu agente.&lt;/p&gt;
&lt;p&gt;El Azure Developer CLI acaba de convertir esto en &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;un asunto de dos comandos&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="el-nuevo-flujo-de-trabajo-azd-ai-agent"&gt;El nuevo flujo de trabajo &lt;code&gt;azd ai agent&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Déjame mostrarte cómo se ve esto realmente. Tienes un proyecto de agente de IA — digamos un agente concierge de hotel. Funciona localmente. Quieres que corra en 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;Eso es todo. Dos comandos. &lt;code&gt;azd ai agent init&lt;/code&gt; genera la infraestructura como código en tu repositorio, y &lt;code&gt;azd up&lt;/code&gt; provisiona todo en Azure y publica tu agente. Obtienes un enlace directo a tu agente en el portal de Foundry.&lt;/p&gt;
&lt;h2 id="qué-pasa-por-debajo"&gt;Qué pasa por debajo&lt;/h2&gt;
&lt;p&gt;El comando &lt;code&gt;init&lt;/code&gt; genera plantillas Bicep reales e inspeccionables en tu repositorio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un &lt;strong&gt;Foundry Resource&lt;/strong&gt; (contenedor de nivel superior)&lt;/li&gt;
&lt;li&gt;Un &lt;strong&gt;Foundry Project&lt;/strong&gt; (donde vive tu agente)&lt;/li&gt;
&lt;li&gt;Configuración de &lt;strong&gt;despliegue de modelo&lt;/strong&gt; (GPT-4o, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identidad administrada&lt;/strong&gt; con asignaciones de roles RBAC apropiadas&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azure.yaml&lt;/code&gt; para el mapa de servicios&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent.yaml&lt;/code&gt; con metadatos del agente y variables de entorno&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La parte clave: todo esto es tuyo. Es Bicep versionado en tu repositorio. Puedes inspeccionarlo, personalizarlo y hacer commit junto con el código de tu agente. Sin cajas negras mágicas.&lt;/p&gt;
&lt;h2 id="el-ciclo-interno-de-desarrollo"&gt;El ciclo interno de desarrollo&lt;/h2&gt;
&lt;p&gt;Lo que realmente me gusta es la historia de desarrollo local. Cuando estás iterando sobre la lógica del agente, no quieres redesplegar cada vez que cambias un 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;Esto inicia tu agente localmente. Combínalo con &lt;code&gt;azd ai agent invoke&lt;/code&gt; para enviar prompts de prueba, y tienes un ciclo de retroalimentación rápido. Editar código, reiniciar, invocar, repetir.&lt;/p&gt;
&lt;p&gt;El comando &lt;code&gt;invoke&lt;/code&gt; es inteligente con el enrutamiento también — cuando un agente local está corriendo, lo apunta automáticamente. Cuando no, apunta al endpoint remoto.&lt;/p&gt;
&lt;h2 id="monitoreo-en-tiempo-real"&gt;Monitoreo en tiempo real&lt;/h2&gt;
&lt;p&gt;Esta es la característica que me convenció. Una vez que tu agente está desplegado:&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 petición y respuesta que fluye a través de tu agente se transmite a tu terminal en tiempo real. Para depurar problemas en producción, esto es invaluable. Sin buscar en log analytics, sin esperar a que las métricas se agreguen — ves lo que está pasando ahora mismo.&lt;/p&gt;
&lt;h2 id="el-set-completo-de-comandos"&gt;El set completo de comandos&lt;/h2&gt;
&lt;p&gt;Aquí la referencia rápida:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Comando&lt;/th&gt;
&lt;th&gt;Qué hace&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;Genera un proyecto de agente Foundry con 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 y despliega el 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;Envía prompts al agente remoto o 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;Ejecuta el agente localmente para desarrollo&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 en tiempo real del 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 la salud y estado del 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;Limpia todos los recursos Azure&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="por-qué-esto-importa-para-desarrolladores-net"&gt;Por qué esto importa para desarrolladores .NET&lt;/h2&gt;
&lt;p&gt;Aunque el ejemplo del anuncio está basado en Python, la historia de infraestructura es agnóstica al lenguaje. Tu agente .NET obtiene el mismo scaffolding Bicep, la misma configuración de identidad administrada, el mismo pipeline de monitoreo. Y si ya estás usando &lt;code&gt;azd&lt;/code&gt; para tus apps .NET Aspire o despliegues Azure, esto encaja directamente en tu flujo de trabajo existente.&lt;/p&gt;
&lt;p&gt;La brecha de despliegue para agentes de IA ha sido uno de los mayores puntos de fricción en el ecosistema. Pasar de un prototipo funcional a un endpoint de producción con identidad, networking y monitoreo adecuados no debería requerir una semana de trabajo DevOps. Ahora requiere dos comandos y unos minutos.&lt;/p&gt;
&lt;h2 id="para-cerrar"&gt;Para cerrar&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd ai agent&lt;/code&gt; está disponible ahora. Si has estado posponiendo el despliegue de tus agentes de IA porque la configuración de infraestructura parecía demasiado trabajo, dale una oportunidad. Revisa el &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;tutorial completo&lt;/a&gt; para el paso a paso completo incluyendo integración de app de chat frontend.&lt;/p&gt;</content:encoded></item></channel></rss>