<?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>Azd | The .NET Blog</title><link>https://thedotnetblog.com/ru/tags/azd/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ru</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Thu, 23 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ru/tags/azd/index.xml" rel="self" type="application/rss+xml"/><item><title>Хуки azd на Python, TypeScript и .NET: прощай, shell-скрипты</title><link>https://thedotnetblog.com/ru/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/ru/news/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/</guid><description>Azure Developer CLI теперь поддерживает хуки на Python, JavaScript, TypeScript и .NET. Больше не нужно переключаться на Bash ради одного скрипта миграции.</description><content:encoded>&lt;p&gt;&lt;em&gt;Этот пост был автоматически переведён. Для оригинальной версии &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/"&gt;нажмите здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Если вы когда-нибудь вели проект полностью на .NET и всё равно писали Bash-скрипты для хуков azd — вы знаете эту боль. Зачем переходить к синтаксису shell в шаге pre-provisioning, когда весь остальной проект написан на C#?&lt;/p&gt;
&lt;p&gt;Эта проблема теперь решена официально. Azure Developer CLI &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-multi-language-hooks/"&gt;выпустила поддержку нескольких языков для хуков&lt;/a&gt;, и это ровно так хорошо, как звучит.&lt;/p&gt;
&lt;h2 id="что-такое-хуки"&gt;Что такое хуки&lt;/h2&gt;
&lt;p&gt;Хуки — это скрипты, выполняемые в ключевых точках жизненного цикла &lt;code&gt;azd&lt;/code&gt; — до провизионинга, после деплоя и не только. Они определяются в &lt;code&gt;azure.yaml&lt;/code&gt; и позволяют внедрять пользовательскую логику без изменений в CLI.&lt;/p&gt;
&lt;p&gt;Раньше поддерживались только Bash и PowerShell. Теперь можно использовать &lt;strong&gt;Python, JavaScript, TypeScript или .NET&lt;/strong&gt; — остальное &lt;code&gt;azd&lt;/code&gt; обрабатывает автоматически.&lt;/p&gt;
&lt;h2 id="как-работает-определение-языка"&gt;Как работает определение языка&lt;/h2&gt;
&lt;p&gt;Просто укажите хук на файл, и &lt;code&gt;azd&lt;/code&gt; определит язык по расширению:&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;Дополнительная конфигурация не нужна. При неоднозначном расширении можно явно указать &lt;code&gt;kind: python&lt;/code&gt; (или нужный язык).&lt;/p&gt;
&lt;h2 id="важные-детали-по-языкам"&gt;Важные детали по языкам&lt;/h2&gt;
&lt;h3 id="python"&gt;Python&lt;/h3&gt;
&lt;p&gt;Разместите &lt;code&gt;requirements.txt&lt;/code&gt; или &lt;code&gt;pyproject.toml&lt;/code&gt; рядом со скриптом (или в родительской директории). &lt;code&gt;azd&lt;/code&gt; автоматически создаёт виртуальное окружение, устанавливает зависимости и запускает скрипт.&lt;/p&gt;
&lt;h3 id="javascript-и-typescript"&gt;JavaScript и TypeScript&lt;/h3&gt;
&lt;p&gt;Тот же принцип — &lt;code&gt;package.json&lt;/code&gt; рядом со скриптом, и &lt;code&gt;azd&lt;/code&gt; сначала выполнит &lt;code&gt;npm install&lt;/code&gt;. Для TypeScript используется &lt;code&gt;npx tsx&lt;/code&gt; без этапа компиляции и без &lt;code&gt;tsconfig.json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="net"&gt;.NET&lt;/h3&gt;
&lt;p&gt;Два режима:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Режим проекта&lt;/strong&gt;: если рядом со скриптом есть &lt;code&gt;.csproj&lt;/code&gt;, &lt;code&gt;azd&lt;/code&gt; автоматически выполнит &lt;code&gt;dotnet restore&lt;/code&gt; и &lt;code&gt;dotnet build&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Single-file режим&lt;/strong&gt;: на .NET 10+ автономные &lt;code&gt;.cs&lt;/code&gt;-файлы запускаются напрямую через &lt;code&gt;dotnet run script.cs&lt;/code&gt;. Файл проекта не нужен.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="конфигурация-по-исполнителю"&gt;Конфигурация по исполнителю&lt;/h2&gt;
&lt;p&gt;Каждый язык поддерживает опциональный блок &lt;code&gt;config&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;hooks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;preprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/setup.ts&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;packageManager&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pnpm&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;postprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/migrate.cs&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Release&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;framework&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;net10.0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="почему-это-важно-для-net-разработчиков"&gt;Почему это важно для .NET-разработчиков&lt;/h2&gt;
&lt;p&gt;Хуки были последним местом в проекте на базе azd, где приходилось менять язык. Теперь весь деплой-пайплайн — от кода приложения до lifecycle-хуков — может жить в одном языке. Можно переиспользовать существующие .NET-утилиты, ссылаться на общие библиотеки и забыть про поддержку shell-скриптов.&lt;/p&gt;
&lt;h2 id="итог"&gt;Итог&lt;/h2&gt;
&lt;p&gt;Одно из тех изменений, что выглядят незначительными, но убирают много трения из повседневной работы с azd. Поддержка нескольких языков для хуков доступна прямо сейчас — подробная документация в &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-multi-language-hooks/"&gt;официальном посте&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>azd + GitHub Copilot: настройка проекта с помощью ИИ и умное исправление ошибок</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/azd-copilot-integration-ai-setup-troubleshooting/</link><pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/azd-copilot-integration-ai-setup-troubleshooting/</guid><description>Azure Developer CLI теперь интегрируется с GitHub Copilot для генерации инфраструктуры проекта и устранения ошибок деплоя — прямо из терминала.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Эта статья переведена автоматически. Оригинальную версию на английском можно найти &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/azd-copilot-integration-ai-setup-troubleshooting/"&gt;здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Знаком ли вам момент, когда хочешь задеплоить существующее приложение в Azure и смотришь на пустой &lt;code&gt;azure.yaml&lt;/code&gt;, пытаясь вспомнить, какой тип хостинга выбрать для Express API — Container Apps или App Service? Этот момент станет намного короче.&lt;/p&gt;
&lt;p&gt;Azure Developer CLI (&lt;code&gt;azd&lt;/code&gt;) теперь интегрируется с GitHub Copilot двумя практичными способами: AI-ассистированный скаффолдинг проекта при &lt;code&gt;azd init&lt;/code&gt; и интеллектуальное устранение ошибок при сбое деплоя. Обе функции работают полностью в терминале — именно там, где они и должны быть.&lt;/p&gt;
&lt;h2 id="настройка-с-copilot-при-azd-init"&gt;Настройка с Copilot при azd init&lt;/h2&gt;
&lt;p&gt;При запуске &lt;code&gt;azd init&lt;/code&gt; теперь появляется опция &amp;ldquo;Set up with GitHub Copilot (Preview)&amp;rdquo;. Выберите её, и Copilot проанализирует вашу кодовую базу, чтобы сгенерировать &lt;code&gt;azure.yaml&lt;/code&gt;, шаблоны инфраструктуры и Bicep-модули — на основе вашего реального кода.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;azd init
# Выберите: &amp;#34;Set up with GitHub Copilot (Preview)&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Что потребуется:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;azd 1.23.11 или новее&lt;/strong&gt; — проверьте &lt;code&gt;azd version&lt;/code&gt; или обновитесь через &lt;code&gt;azd update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Активная подписка GitHub Copilot&lt;/strong&gt; (Individual, Business или Enterprise)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub CLI (&lt;code&gt;gh&lt;/code&gt;)&lt;/strong&gt; — &lt;code&gt;azd&lt;/code&gt; запросит вход при необходимости&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Что мне по-настоящему нравится: это работает в обоих направлениях. Строите с нуля? Copilot поможет настроить правильные сервисы Azure с самого начала. Есть существующее приложение, которое давно хотели задеплоить? Направьте на него Copilot — конфигурация будет сгенерирована без необходимости что-либо переструктурировать.&lt;/p&gt;
&lt;h3 id="что-происходит-на-самом-деле"&gt;Что происходит на самом деле&lt;/h3&gt;
&lt;p&gt;Допустим, у вас есть Node.js Express API с зависимостью от PostgreSQL. Вместо того чтобы вручную выбирать между Container Apps и App Service, а затем писать Bicep с нуля, Copilot определит стек и сгенерирует:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;azure.yaml&lt;/code&gt; с правильными настройками &lt;code&gt;language&lt;/code&gt;, &lt;code&gt;host&lt;/code&gt; и &lt;code&gt;build&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Bicep-модуль для Azure Container Apps&lt;/li&gt;
&lt;li&gt;Bicep-модуль для Azure Database for PostgreSQL&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Перед любыми изменениями выполняются предварительные проверки — убеждается в чистоте рабочей директории git, заранее запрашивает согласие на инструменты MCP-сервера. Ничего не произойдёт без вашего понимания того, что именно изменится.&lt;/p&gt;
&lt;h2 id="устранение-ошибок-с-помощью-copilot"&gt;Устранение ошибок с помощью Copilot&lt;/h2&gt;
&lt;p&gt;Ошибки деплоя неизбежны. Пропущенные параметры, проблемы с правами, недоступность SKU — и сообщение об ошибке редко подсказывает именно то, что нужно: &lt;em&gt;как это исправить&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Без Copilot цикл выглядит так: скопировать ошибку → искать в документации → читать три нерелевантных ответа на Stack Overflow → выполнить команды &lt;code&gt;az&lt;/code&gt; CLI → попробовать снова. С Copilot в &lt;code&gt;azd&lt;/code&gt; этот цикл рушится. При любом сбое команды &lt;code&gt;azd&lt;/code&gt; сразу предлагаются четыре варианта:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Explain&lt;/strong&gt; — простое объяснение того, что пошло не так&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guidance&lt;/strong&gt; — пошаговые инструкции по исправлению&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diagnose and Guide&lt;/strong&gt; — полный анализ + Copilot применяет исправление (с вашего одобрения) + опциональный повтор&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skip&lt;/strong&gt; — разобраться самостоятельно&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ключевой момент: у Copilot уже есть контекст вашего проекта, упавшей команды и деталей ошибки. Его предложения специфичны именно для &lt;em&gt;вашей ситуации&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id="настройка-поведения-по-умолчанию"&gt;Настройка поведения по умолчанию&lt;/h3&gt;
&lt;p&gt;Если всегда выбираете одно и то же, пропустите интерактивный запрос:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;azd config set copilot.errorHandling.category troubleshoot
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Значения: &lt;code&gt;explain&lt;/code&gt;, &lt;code&gt;guidance&lt;/code&gt;, &lt;code&gt;troubleshoot&lt;/code&gt;, &lt;code&gt;fix&lt;/code&gt;, &lt;code&gt;skip&lt;/code&gt;. Можно включить автоматическое исправление и повтор:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;azd config set copilot.errorHandling.fix allow
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Вернуться к интерактивному режиму в любой момент:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;azd config unset copilot.errorHandling.category
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="итоги"&gt;Итоги&lt;/h2&gt;
&lt;p&gt;Запустите &lt;code&gt;azd update&lt;/code&gt; для получения последней версии и попробуйте &lt;code&gt;azd init&lt;/code&gt; на следующем проекте. Это именно та интеграция Copilot, которая приносит реальную ценность.&lt;/p&gt;
&lt;p&gt;Читайте &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-copilot-integration/"&gt;оригинальное объявление здесь&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>azd update — Одна команда для всех ваших пакетных менеджеров</title><link>https://thedotnetblog.com/ru/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/ru/news/emiliano-montesdeoca/azd-update-universal-upgrade-command/</guid><description>Azure Developer CLI теперь имеет универсальную команду обновления, которая работает независимо от способа установки — winget, Homebrew, Chocolatey или скрипт установки.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Этот пост был переведён автоматически. Оригинальная версия доступна &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/azd-update-universal-upgrade-command/"&gt;здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Знаете это сообщение «Доступна новая версия azd», которое появляется каждые несколько недель? То самое, которое вы закрываете, потому что не помните, устанавливали ли вы &lt;code&gt;azd&lt;/code&gt; через winget, Homebrew или тот curl-скрипт, который запустили полгода назад? Так вот, это наконец-то исправлено.&lt;/p&gt;
&lt;p&gt;Microsoft выпустила &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;&lt;code&gt;azd update&lt;/code&gt;&lt;/a&gt; — единую команду, которая обновляет Azure Developer CLI до последней версии независимо от того, как вы её изначально установили. Windows, macOS, Linux — неважно. Одна команда.&lt;/p&gt;
&lt;h2 id="как-это-работает"&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;azd update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Вот и всё. Если хотите ранний доступ к новым возможностям, можно переключиться на ежедневную 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;Команда определяет текущий метод установки и использует подходящий механизм обновления под капотом. Больше никаких «подожди, я на этой машине winget или choco использовал?»&lt;/p&gt;
&lt;h2 id="небольшой-нюанс"&gt;Небольшой нюанс&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd update&lt;/code&gt; доступна начиная с версии 1.23.x. Если у вас более старая версия, придётся выполнить последнее ручное обновление через исходный метод установки. После этого &lt;code&gt;azd update&lt;/code&gt; берёт всё на себя.&lt;/p&gt;
&lt;p&gt;Проверьте текущую версию командой &lt;code&gt;azd version&lt;/code&gt;. Если нужна чистая установка, &lt;a href="https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd"&gt;документация по установке&lt;/a&gt; вам поможет.&lt;/p&gt;
&lt;h2 id="почему-это-важно"&gt;Почему это важно&lt;/h2&gt;
&lt;p&gt;Это небольшое улучшение качества жизни, но для тех из нас, кто ежедневно использует &lt;code&gt;azd&lt;/code&gt; для деплоя ИИ-агентов и Aspire-приложений в Azure, быть на последней версии означает меньше моментов «этот баг уже был исправлен в последнем релизе». На одну заботу меньше.&lt;/p&gt;
&lt;p&gt;Читайте &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-update/"&gt;полный анонс&lt;/a&gt; и &lt;a href="https://blog.jongallant.com/2026/04/azd-update"&gt;подробный разбор&lt;/a&gt; Джона Галланта для дополнительного контекста.&lt;/p&gt;</content:encoded></item><item><title>azd теперь позволяет запускать и отлаживать ИИ-агенты локально — Что изменилось в марте 2026</title><link>https://thedotnetblog.com/ru/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/ru/news/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/</guid><description>Azure Developer CLI выпустил семь версий в марте 2026. Главное: локальный цикл запуска и отладки для ИИ-агентов, интеграция GitHub Copilot в настройке проектов и поддержка Container App Jobs.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Этот пост был переведён автоматически. Оригинальную версию можно найти &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/azd-march-2026-local-ai-agent-debugging/"&gt;здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Семь релизов за месяц. Именно столько выпустила команда Azure Developer CLI (&lt;code&gt;azd&lt;/code&gt;) в марте 2026, и главная фича — та, которую я ждал: &lt;strong&gt;локальный цикл запуска и отладки для ИИ-агентов&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;опубликовала полный обзор&lt;/a&gt;, и хотя там много всего, позвольте мне отфильтровать то, что действительно важно для .NET-разработчиков, создающих приложения с ИИ.&lt;/p&gt;
&lt;h2 id="запуск-и-отладка-ии-агентов-без-деплоя"&gt;Запуск и отладка ИИ-агентов без деплоя&lt;/h2&gt;
&lt;p&gt;Это главное. Новое расширение &lt;code&gt;azure.ai.agents&lt;/code&gt; добавляет команды для полноценного inner-loop для ИИ-агентов:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;azd ai agent run&lt;/code&gt; — запускает агент локально&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent invoke&lt;/code&gt; — отправляет сообщения (локально или в продакшн)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent show&lt;/code&gt; — показывает статус контейнера и здоровье&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azd ai agent monitor&lt;/code&gt; — стримит логи контейнера в реальном времени&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Раньше тестирование ИИ-агента означало деплой в Microsoft Foundry при каждом изменении. Теперь можно итерировать локально, тестировать поведение агента и деплоить только когда готов.&lt;/p&gt;
&lt;h2 id="github-copilot-настраивает-ваш-azd-проект"&gt;GitHub Copilot настраивает ваш azd-проект&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd init&lt;/code&gt; теперь предлагает опцию &amp;ldquo;Set up with GitHub Copilot (Preview)&amp;rdquo;. Вместо ручного ответа на промпты, Copilot-агент генерирует конфигурацию за вас. Когда команда падает, &lt;code&gt;azd&lt;/code&gt; предлагает ИИ-ассистированное устранение неполадок — всё не выходя из терминала.&lt;/p&gt;
&lt;h2 id="container-app-jobs-и-улучшения-деплоя"&gt;Container App Jobs и улучшения деплоя&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Container App Jobs&lt;/strong&gt;: &lt;code&gt;azd&lt;/code&gt; теперь деплоит &lt;code&gt;Microsoft.App/jobs&lt;/code&gt; через существующую конфигурацию &lt;code&gt;host: containerapp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Настраиваемые таймауты деплоя&lt;/strong&gt;: Новый флаг &lt;code&gt;--timeout&lt;/code&gt; в &lt;code&gt;azd deploy&lt;/code&gt; и поле &lt;code&gt;deployTimeout&lt;/code&gt; в &lt;code&gt;azure.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Фолбэк удалённой сборки&lt;/strong&gt;: При неудаче ACR-сборки &lt;code&gt;azd&lt;/code&gt; автоматически переключается на локальный Docker/Podman.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Локальная preflight-валидация&lt;/strong&gt;: Bicep-параметры проверяются локально перед деплоем.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="улучшения-dx"&gt;Улучшения DX&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Автоматическое определение pnpm/yarn&lt;/strong&gt; для JS/TS-проектов&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Поддержка pyproject.toml&lt;/strong&gt; для Python&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Локальные каталоги шаблонов&lt;/strong&gt; — &lt;code&gt;azd init --template&lt;/code&gt; принимает пути файловой системы&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Улучшенные сообщения об ошибках&lt;/strong&gt; в режиме &lt;code&gt;--no-prompt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Переменные окружения сборки&lt;/strong&gt; — инжектируются во все подпроцессы сборки (.NET, Node.js, Java, Python)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="подведём-итоги"&gt;Подведём итоги&lt;/h2&gt;
&lt;p&gt;Локальный цикл отладки ИИ-агентов — звезда этого релиза, но совокупность улучшений деплоя и DX делает &lt;code&gt;azd&lt;/code&gt; более зрелым, чем когда-либо. Если вы деплоите .NET-приложения в Azure — особенно ИИ-агенты — это обновление стоит внимания.&lt;/p&gt;
&lt;p&gt;Ознакомьтесь с &lt;a href="https://devblogs.microsoft.com/azure-sdk/azure-developer-cli-azd-march-2026/"&gt;полными заметками о выпуске&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>С ноутбука в продакшен: развёртывание ИИ-агентов в Microsoft Foundry двумя командами</title><link>https://thedotnetblog.com/ru/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/ru/news/emiliano-montesdeoca/deploy-ai-agents-foundry-azd-two-commands/</guid><description>Azure Developer CLI теперь имеет команды 'azd ai agent', которые переносят вашего ИИ-агента с локальной разработки на живой эндпоинт Foundry за минуты. Вот полный рабочий процесс.</description><content:encoded>&lt;p&gt;Вы знаете тот разрыв между «работает на моей машине» и «развёрнуто и обслуживает трафик»? Для ИИ-агентов этот разрыв был болезненно широким. Нужно подготовить ресурсы, развернуть модели, настроить идентификацию, организовать мониторинг — и это до того, как кто-либо сможет реально вызвать вашего агента.&lt;/p&gt;
&lt;p&gt;Azure Developer CLI только что превратил это в &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;дело двух команд&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="новый-рабочий-процесс-azd-ai-agent"&gt;Новый рабочий процесс &lt;code&gt;azd ai agent&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Давайте пройдём по тому, как это реально выглядит. У вас есть проект ИИ-агента — допустим, агент-консьерж для отеля. Он работает локально. Вы хотите запустить его на 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;Вот и всё. Две команды. &lt;code&gt;azd ai agent init&lt;/code&gt; генерирует инфраструктуру как код в вашем репозитории, а &lt;code&gt;azd up&lt;/code&gt; разворачивает всё в Azure и публикует вашего агента. Вы получаете прямую ссылку на вашего агента в портале Foundry.&lt;/p&gt;
&lt;h2 id="что-происходит-под-капотом"&gt;Что происходит под капотом&lt;/h2&gt;
&lt;p&gt;Команда &lt;code&gt;init&lt;/code&gt; генерирует реальные, проверяемые шаблоны Bicep в вашем репозитории:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Foundry Resource&lt;/strong&gt; (контейнер верхнего уровня)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Foundry Project&lt;/strong&gt; (где живёт ваш агент)&lt;/li&gt;
&lt;li&gt;Конфигурация &lt;strong&gt;развёртывания модели&lt;/strong&gt; (GPT-4o и т.д.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Managed identity&lt;/strong&gt; с правильными назначениями ролей RBAC&lt;/li&gt;
&lt;li&gt;&lt;code&gt;azure.yaml&lt;/code&gt; для карты сервисов&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent.yaml&lt;/code&gt; с метаданными агента и переменными окружения&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ключевой момент: всё это принадлежит вам. Это версионированный Bicep в вашем репозитории. Вы можете его проверить, настроить и закоммитить рядом с кодом вашего агента. Никаких магических чёрных ящиков.&lt;/p&gt;
&lt;h2 id="внутренний-цикл-разработки"&gt;Внутренний цикл разработки&lt;/h2&gt;
&lt;p&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;azd ai agent run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Это запускает вашего агента локально. Комбинируйте с &lt;code&gt;azd ai agent invoke&lt;/code&gt; для отправки тестовых промптов, и у вас есть быстрый цикл обратной связи. Редактируете код, перезапускаете, вызываете, повторяете.&lt;/p&gt;
&lt;p&gt;Команда &lt;code&gt;invoke&lt;/code&gt; умная в плане маршрутизации — когда локальный агент запущен, она автоматически направляет на него. Когда нет — обращается к удалённому эндпоинту.&lt;/p&gt;
&lt;h2 id="мониторинг-в-реальном-времени"&gt;Мониторинг в реальном времени&lt;/h2&gt;
&lt;p&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;azd ai agent monitor --follow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Каждый запрос и ответ, проходящий через вашего агента, транслируется в ваш терминал в реальном времени. Для отладки продакшен-проблем это бесценно. Никакого копания в log analytics, никакого ожидания агрегации метрик — вы видите, что происходит прямо сейчас.&lt;/p&gt;
&lt;h2 id="полный-набор-команд"&gt;Полный набор команд&lt;/h2&gt;
&lt;p&gt;Вот краткий справочник:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Команда&lt;/th&gt;
&lt;th&gt;Что делает&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;Генерирует проект агента Foundry с 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;Разворачивает Azure-ресурсы и публикует агента&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;Отправляет промпты удалённому или локальному агенту&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;Запускает агента локально для разработки&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;Транслирует логи от опубликованного агента в реальном времени&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;Проверяет состояние и здоровье агента&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;Удаляет все Azure-ресурсы&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="почему-это-важно-для-net-разработчиков"&gt;Почему это важно для .NET-разработчиков&lt;/h2&gt;
&lt;p&gt;Хотя пример в анонсе написан на Python, история инфраструктуры не зависит от языка. Ваш .NET-агент получает тот же Bicep-шаблон, ту же настройку managed identity, тот же пайплайн мониторинга. И если вы уже используете &lt;code&gt;azd&lt;/code&gt; для своих .NET Aspire-приложений или развёртываний Azure, это вписывается прямо в ваш существующий рабочий процесс.&lt;/p&gt;
&lt;p&gt;Разрыв в развёртывании ИИ-агентов был одной из самых больших точек трения в экосистеме. Переход от работающего прототипа к продакшен-эндпоинту с правильной идентификацией, сетью и мониторингом не должен требовать недели DevOps-работы. Теперь для этого нужны две команды и несколько минут.&lt;/p&gt;
&lt;h2 id="итог"&gt;Итог&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;azd ai agent&lt;/code&gt; доступен сейчас. Если вы откладывали развёртывание своих ИИ-агентов, потому что настройка инфраструктуры казалась слишком трудоёмкой, попробуйте это. Ознакомьтесь с &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-ai-agent-end-to-end/"&gt;полным руководством&lt;/a&gt; для полной пошаговой инструкции, включая интеграцию с фронтенд-чат-приложением.&lt;/p&gt;</content:encoded></item></channel></rss>