Анализ сайта blog.xamarin.com
Основное Готовность: 50%
Домен
blog.xamarin.com
Состояние доменного имени
?
Проверяем корректность доменного имени и наличие технических проблем на уровне домена.
Используйте для продвижения только домен второго уровня.
Длина домена велика. Но если вы продвигаете запрос, входящий в название домена, то это хорошо.
Ответ сервера
200 Успешный ответ
HTTP-код ответа и цепочка редиректов
?
Код 200 — страница доступна. Коды 3xx — редиректы (цепочки замедляют загрузку и размывают ссылочный вес). Коды 4xx/5xx — ошибки, поисковик не сможет проиндексировать страницу.
Кол-во редиректов 3 слишком большое! Проверьте настройки сайта и веб-сервера!
Цепочка редиректов:
http://blog.xamarin.com
301 MovedPermanently
https://devblogs.microsoft.com/xamarin
302 Found
https://devblogs.microsoft.com/dotnet/category/maui/
200 OK
Безопасность
Сайт безопасен
Использование HTTPS и SSL-сертификат
?
HTTPS — обязательный стандарт. Google и Яндекс отдают предпочтение защищённым сайтам. Отсутствие SSL или просроченный сертификат ведут к предупреждениям в браузере и снижению позиций.
На сайте работает защищенный протокол ssl и сайт открывается по https.
Ssl-сертификат действителен до 11.10.2026 11:43:19.
Включён HSTS (Strict-Transport-Security) — защита от подмены на http.
HTTP автоматически перенаправляется на HTTPS.
Поздравляем! Сайт не содержится в реестре РКН.
Кодировка
UTF-8
Кодировка символов страницы
?
Стандарт — UTF-8. Неправильная кодировка вызывает нечитаемые символы и мешает поисковику корректно распознать текст страницы.
Указана кодировка на странице UTF-8.
Язык
en-US
Атрибут lang в HTML-теге
?
Атрибут lang (<html lang="ru">) сообщает поисковикам и браузерам, на каком языке написана страница. Помогает при ранжировании в региональном поиске.
Язык документа указан явно: en-US.
Скорость загрузки
~0,61сек
Время отклика сервера (TTFB)
?
Time To First Byte — время до получения первого байта от сервера. Норма до 200 мс. Медленный отклик ухудшает пользовательский опыт и ранжирование: Яндекс и Google учитывают скорость страниц.
Скорость загрузки сайта 0,61сек оптимальна.
Объем документа
227Кб
Размер HTML-кода страницы
?
Слишком большой HTML замедляет парсинг браузером и сканирование поисковым роботом. Рекомендуется не более 200 Кб.
Объем html-документа 227Кб оптимален.
Структура html-документа корректна.
Ресурсы
Ресурсы: 30
Внешние ресурсы страницы (CSS, JS, изображения)
?
Количество и тип подключённых ресурсов влияют на скорость загрузки. Большое число запросов увеличивает время рендеринга страницы.
Кол-во файлов ресурсов 30 много для одной страницы. Приемлемо до 10. Проведите оптимизацию файлов ресурсов!
Показать полный список ресурсов
| Тип | Название | Значение |
|---|---|---|
| stylesheet | https://devblogs.microsoft.com/dotnet/wp-content/plugins/metronet-profile-picture/dist/blocks.style.build.css?ver=2.6.4 | |
| stylesheet | https://devblogs.microsoft.com/dotnet/wp-content/plugins/devblogs-lightbox/assets/css/lightbox.min.css?ver=1770924660 | |
| stylesheet | https://devblogs.microsoft.com/dotnet/wp-content/plugins/newsletter/style.css?ver=9.3.5 | |
| stylesheet | https://devblogs.microsoft.com/dotnet/wp-content/plugins/newsletter-country-sync/css/newsletter-style.css?ver=1770924660 | |
| stylesheet | https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/css/theme.min.css?ver=1.4.0.1784230473 | |
| stylesheet | https://devblogs.microsoft.com/dotnet/wp-content/plugins/fabric-icon-manager/assets/css/fabric-icons.css?ver=1699358813 | |
| stylesheet | https://devblogs.microsoft.com/dotnet/wp-content/plugins/devblogs-blocks/assets/block-custom.css | |
| stylesheet | https://uhf.microsoft.com/statics/20260701.14.10/css/style-BpBYj3rT.css | |
| js | https://devblogs.microsoft.com/dotnet/wp-includes/js/jquery/jquery.min.js?ver=3.7.1 | |
| js | text/javascript | https://js.monitor.azure.com/scripts/c/ms.jsll-4.min.js |
| js | https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js | |
| js | module | https://uhf.microsoft.com/statics/20260701.14.10/js/entry.js |
| js | https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/plugins/devblogs-comments-evo/admin/js/commentsvote.js?ver=1.1 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/plugins/metronet-profile-picture/js/mpp-frontend.js?ver=2.6.4 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/plugins/devblogs-evo-breadcrumbs/assets/breadcrumbs.min.js?ver=1.7 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/plugins/devblogs-lightbox/assets/js/lightbox.min.js?ver=1770924660 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/plugins/newsletter-country-sync/js/newsletter-country-scripts.min.js?ver=1770158083 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/plugins/shortcode-toc/assets/vendor/js/anchorific.js?ver=1.0.3 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/theme.min.js?ver=1.4.0.1763057732 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/custom-theme.min.js?ver=1776792580 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/alert-banner.min.js?ver=1737047887 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/loadmore-ajax.js?ver=1785436675 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/theme-picker.min.js?ver=1784834880 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/dropdown-menu.min.js?ver=1776961454 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/back-to-top.min.js?ver=1737047887 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/accordion-toggle.min.js?ver=1784230473 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/gifffer.min.js?ver=1.1 | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/jquery-alias.js | |
| js | https://devblogs.microsoft.com/dotnet/wp-content/plugins/newsletter/main.js?ver=9.3.5 |
Серверные заголовки
Кол-во: 18
HTTP-заголовки ответа сервера
?
Заголовки сервера передают браузеру и поисковику служебную информацию: кеширование, безопасность (CSP, HSTS), сжатие (gzip). Правильная настройка ускоряет загрузку и повышает защищённость.
Найдены серверные заголовки 18шт. Подробнее про серверные заголовки.
Показать полный список серверных заголовков
| Ключ | Значение |
|---|---|
| Server | nginx |
| Access-Control-Allow-Headers | Content-Type, Authorization |
| Access-Control-Allow-Methods | GET, POST, OPTIONS |
| Access-Control-Allow-Origin | https://dev.quantum.microsoft.com |
| Link | <https://devblogs.microsoft.com/dotnet/wp-json/>; rel="https://api.w.org/" |
| Server-Timing | wp-before-template;dur=72.04 |
| X-Powered-By | WP Engine |
| x-cacheable | SHORT |
| x-cache-group | normal |
| X-XSS-Protection | 1; mode=block |
| Cache-Control | must-revalidate, max-age=600 |
| Date | Thu, 20 Aug 2026 23:28:27 GMT |
| feature-policy | geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; fullscreen 'self'; payment 'none' |
| Referrer-Policy | no-referrer-when-downgrade |
| X-Content-Type-Options | nosniff |
| X-Frame-Options | SAMEORIGIN |
| Content-Security-Policy | script-src 'self' 'unsafe-inline' 'unsafe-eval' https:; worker-src 'self' blob:; |
| Strict-Transport-Security | max-age=15768000 ; includeSubDomains ; preload |
CMS
Система управления сайтом (движок)
?
CMS — это движок, на котором работает сайт (WordPress, 1C-Bitrix, Tilda и др.). Знание CMS помогает понять возможности SEO-оптимизации и подобрать подходящие инструменты. «Не определена» — вероятно, самописный сайт или нестандартная сборка.
Сайт работает на CMS WordPress.
Веб-сервер
Программное обеспечение сервера
?
Веб-сервер — это ПО, которое отдаёт страницы посетителям (nginx, Apache, IIS, LiteSpeed и др.). Определяется по серверным заголовкам ответа (Server, X-Powered-By и т.п.). «Не определён» — сервер намеренно скрывает эти заголовки, это нормальная практика безопасности.
Сайт работает на веб-сервере nginx.
Мета-теги Готовность: 23%
Title
.NET MAUI - Category | .NET Blog
Заголовок страницы в браузере и поисковой выдаче
?
Title — главный SEO-заголовок страницы. Влияет на CTR в поиске и ранжирование. Оптимальная длина: 50–70 символов. Ключевые слова — ближе к началу.
Необходимо увеличить число символов в title (текущее значение: 32, оптимально: от 40 до 45)
Дублей словоформ в title не найдено.
Description
Описание страницы в поисковой выдаче (сниппет)
?
Meta Description — текст под заголовком в выдаче. Напрямую на позиции не влияет, но влияет на CTR. Оптимальная длина: 120–160 символов.
Установите мета-тег description!
Keywords
Список ключевых слов страницы (устаревший тег)
?
Meta Keywords не учитывается Яндексом и Google для ранжирования с 2009–2012 годов. Заполнение не обязательно, но не вредит. Конкурент может использовать содержимое для анализа.
Установите мета-тег keywords!
Канонический Url
https://devblogs.microsoft.com/dotnet/category/maui/
Указывает поисковику основную версию страницы
?
Canonical (rel=canonical) предотвращает проблему дублей страниц. Должен точно совпадать с URL проверяемой страницы. Неправильный canonical может передать ссылочный вес на другую страницу.
Канонический Url прописан корректно.
Robots
index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1
Директивы для поисковых роботов на уровне страницы
?
Meta Robots управляет индексацией конкретной страницы: index/noindex — индексировать ли, follow/nofollow — следовать ли по ссылкам. Noindex полностью исключает страницу из поиска.
Meta-тег robots со значениями index, follow не накладывает ограничений на индексирование и показ контента.
Адаптивность
width=device-width, initial-scale=1, shrink-to-fit=no
Настройка масштабирования на мобильных устройствах
?
Тег viewport (<meta name="viewport">) сообщает браузеру, как масштабировать страницу на мобильных. Стандарт: width=device-width, initial-scale=1. Отсутствие — признак отсутствия мобильной версии.
Meta-тег viewport со значением-константой width=device-width задаёт ширину страницы в соответствии с размером экрана.
Meta-тег viewport со значением initial-scale=1.0 определяет масштаб 1:1, т.е. «не масштабировать».
Разметка OpenGraph
Кол-во: 9
Мета-теги для красивых превью в соцсетях
?
OpenGraph (og:title, og:description, og:image) управляет тем, как страница выглядит при репосте в социальных сетях и мессенджерах. Отсутствие OG-тегов — невзрачный превью при шеринге.
Разметка OpenGraph задана. Страница оптимизирована под социальные сети.
Показать полный список og мета-тегов
| Тип | Значение |
|---|---|
| og:locale | en_US |
| og:type | article |
| og:title | .NET MAUI |
| og:url | https://devblogs.microsoft.com/dotnet/category/maui/ |
| og:site_name | .NET Blog |
| og:image | https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2019/02/swimlane-cross-platform.png |
| og:image:width | 636 |
| og:image:height | 300 |
| og:image:type | image/png |
Все мета-теги
Кол-во: 21
Полный список мета-тегов страницы
?
Таблица всех meta-тегов, включая нестандартные. Позволяет найти опечатки, дубли и лишние теги.
Найдены мета-теги 21шт. Мета-теги не видимы для человека и предназначены для обмена информацией между веб-страницей и поисковыми системами, браузерами и другими веб-службами. С ними роботы 🤖 и устройства ведут себя более ожидаемо.
Показать полный список мета-тегов
| Тип | Название | Значение |
|---|---|---|
| name | awa-pageType | category |
| name | awa-product | .NET Blog |
| name | viewport | width=device-width, initial-scale=1, shrink-to-fit=no |
| name | mobile-web-app-capable | yes |
| name | color-scheme | dark light |
| name | apple-mobile-web-app-capable | yes |
| name | apple-mobile-web-app-title | .NET Blog - Free. Cross-platform. Open source. A developer platform for building all your apps. |
| name | robots | index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1 |
| name | twitter:card | summary_large_image |
| name | generator | performance-lab 4.2.0; plugins: webp-uploads |
| name | generator | webp-uploads 2.7.1 |
| name | msapplication-TileImage | https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/10/Microsoft-favicon-300x300.jpg |
| property | og:locale | en_US |
| property | og:type | article |
| property | og:title | .NET MAUI |
| property | og:url | https://devblogs.microsoft.com/dotnet/category/maui/ |
| property | og:site_name | .NET Blog |
| property | og:image | https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2019/02/swimlane-cross-platform.png |
| property | og:image:width | 636 |
| property | og:image:height | 300 |
| property | og:image:type | image/png |
Оптимизация Готовность: 92%
Структура
Ошибок нет
Семантические HTML-элементы страницы
?
Проверяет наличие основных структурных элементов: nav, header, footer, main. Корректная семантическая структура помогает поисковику понять архитектуру страницы.
Структура документа корректна (теги <html> и <body> присутствуют по одному на документ).
Контент
Ошибок нет
Объём и качество текстового содержимого
?
Анализирует объём полезного текста на странице. Слишком мало — страница может считаться малополезной. Слишком много — ухудшается читаемость и восприятие.
Слова из title 4 встречаются в тексте достаточно.
Абзацев с текстом 12 достаточно.
Среднее число слов в абзаце 24 достаточно.
Кол-во знаков контента 8967 на странице оптимально.
Кол-во слов 1478 на странице оптимально.
Заголовки
Ошибок нет
Иерархия заголовков H1–H6
?
H1 должен быть один и содержать ключевой запрос. H2–H6 описывают подразделы. Пропуск уровней (H1 → H3) и несколько H1 — типичные ошибки, снижающие понятность страницы для поисковика.
На странице присутствуют заголовки <h1> 1. Это прекрасно.
На странице присутствуют заголовки <h2> 8. Это хорошо.
На странице присутствуют заголовки <h3> 10.
Тошнота
5,29
Насколько одно слово доминирует в тексте
?
Классическая тошнота = √(частота самого повторяющегося слова). Норма до 7–8: текст воспринимается естественно. Выше — поисковик может счесть страницу переспамленной.
Тошнота превышает норму 3. Измените текст страницы!
Академич. тошнота
5,35%
Насколько текст перенасыщен ключевыми словами
?
Академическая тошнота = (частота слова / общее количество слов) × 100%. Показывает долю конкретного слова в тексте. Норма 5–15%.
Академическая тошнота страницы в пределах нормы.
Семантическое ядро
20
Наиболее часто встречающиеся слова на странице
?
Топ слов по частоте использования. Показывает, какие слова доминируют в тексте с точки зрения поисковика.
Контент страницы содержит осмысленный текст и слова.
Показать список слов
| Слово | Кол-во | Частота |
|---|---|---|
| microsoft | 28 | 1,89% |
| august | 21 | 1,42% |
| february | 21 | 1,42% |
| january | 21 | 1,42% |
| december | 21 | 1,42% |
| november | 21 | 1,42% |
| october | 21 | 1,42% |
| september | 21 | 1,42% |
| preview | 11 | 0,74% |
| comments | 10 | 0,68% |
| privacy | 8 | 0,54% |
| framework | 7 | 0,47% |
| developer | 7 | 0,47% |
| runtime | 7 | 0,47% |
| entity | 6 | 0,41% |
| skiasharp | 6 | 0,41% |
| windows | 5 | 0,34% |
| available | 5 | 0,34% |
| features | 5 | 0,34% |
| across | 5 | 0,34% |
Индексация Готовность: 0%
Индексирование
Есть ошибки
Разрешено ли индексирование страницы
?
Проверяет, не закрыта ли страница от индексации через robots.txt, meta robots или X-Robots-Tag. Страница, закрытая от индексации, не появится в поисковой выдаче.
Анкоров на странице 437 слишком много. Проведите ревизию и оптимизацию ссылок сайта.
Robots.txt
Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Кол-во редиректов для файла robots.txt 3 слишком большое! Это может вызывать затруднение при индексации поисковыми роботами!
Проверяемая страница не запрещена в robots.txt.
Robots.txt доступен по постоянному адресу
Цепочка редиректов для файла robots.txt:
http://blog.xamarin.com/robots.txt
301 MovedPermanently
https://devblogs.microsoft.com/xamarin
302 Found
https://devblogs.microsoft.com/dotnet/category/maui/
200 OK
Показать содержимое robots.txt
<!DOCTYPE html>
<html lang="en-US" theme="light">
<head>
<meta charset="UTF-8">
<script>
// Initialize theme from localStorage or system preference
let theme = localStorage.getItem('theme') || (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
document.documentElement.setAttribute('theme', theme);
const metaTag = document.createElement('meta');
metaTag.setAttribute('name', 'awa-ver');
metaTag.content = theme;
document.head.appendChild(metaTag);
isDarkTheme = theme === 'dark';
</script>
<style id="devblogs-reveal">
/* The theme is already set synchronously on <html> above, so the legacy body-hide (visibility:hidden in the deferred theme stylesheet) is unnecessary and blocks the LCP paint; force the page visible immediately via an inline <style> — unlike a <script>, this is not gated on external stylesheet loads. */
html body { visibility: visible !important; opacity: 1 !important; }
</style>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="awa-pageType" content="category" />
<meta name="awa-product" content=".NET Blog" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>.NET MAUI - Category | .NET Blog</title>
<meta name="mobile-web-app-capable" content="yes">
<meta name="color-scheme" content="dark light">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-title" content=".NET Blog - Free. Cross-platform. Open source. A developer platform for building all your apps.">
<link rel="profile" href="http://gmpg.org/xfn/11">
<link rel="pingback" href="https://devblogs.microsoft.com/dotnet/xmlrpc.php">
<!-- [Begin] JSLL SHIM (1DS) domain prefetch -->
<link rel="preconnect" href="//js.monitor.azure.com" crossorigin>
<link rel="preconnect" href="//browser.events.data.microsoft.com" crossorigin>
<!-- [END] JSLL SHIM (1DS) domain prefetch -->
<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
<!-- This site is optimized with the Yoast SEO Premium plugin v28.3 (Yoast SEO v28.3) - https://yoast.com/product/yoast-seo-premium-wordpress/ -->
<link rel="canonical" href="https://devblogs.microsoft.com/dotnet/category/maui/" />
<link rel="next" href="https://devblogs.microsoft.com/dotnet/category/maui/page/2/" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="article" />
<meta property="og:title" content=".NET MAUI" />
<meta property="og:url" content="https://devblogs.microsoft.com/dotnet/category/maui/" />
<meta property="og:site_name" content=".NET Blog" />
<meta property="og:image" content="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2019/02/swimlane-cross-platform.png" />
<meta property="og:image:width" content="636" />
<meta property="og:image:height" content="300" />
<meta property="og:image:type" content="image/png" />
<meta name="twitter:card" content="summary_large_image" />
<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"CollectionPage","@id":"https:\/\/devblogs.microsoft.com\/dotnet\/category\/maui\/","url":"https:\/\/devblogs.microsoft.com\/dotnet\/category\/maui\/","name":".NET MAUI - .NET Blog","isPartOf":{"@id":"https:\/\/devblogs.microsoft.com\/dotnet\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devblogs.microsoft.com\/dotnet\/category\/maui\/#primaryimage"},"image":{"@id":"https:\/\/devblogs.microsoft.com\/dotnet\/category\/maui\/#primaryimage"},"thumbnailUrl":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2026\/08\/dotnet11p7.webp","inLanguage":"en-US"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devblogs.microsoft.com\/dotnet\/category\/maui\/#primaryimage","url":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2026\/08\/dotnet11p7.webp","contentUrl":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2026\/08\/dotnet11p7.webp","width":1920,"height":1080,"caption":"dotnet11p7 jpg image"},{"@type":"WebSite","@id":"https:\/\/devblogs.microsoft.com\/dotnet\/#website","url":"https:\/\/devblogs.microsoft.com\/dotnet\/","name":".NET Blog","description":"Free. Cross-platform. Open source. A developer platform for building all your apps.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devblogs.microsoft.com\/dotnet\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script>
<!-- / Yoast SEO Premium plugin. -->
<link rel="alternate" type="application/rss+xml" title=".NET Blog » .NET MAUI Category Feed" href="https://devblogs.microsoft.com/dotnet/category/maui/feed/" />
<style id="wp-img-auto-sizes-contain-inline-css">
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<style id="wp-emoji-styles-inline-css">
img.wp-smiley, img.emoji {
display: inline !important;
border: none !important;
box-shadow: none !important;
height: 1em !important;
width: 1em !important;
margin: 0 0.07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}
/*# sourceURL=wp-emoji-styles-inline-css */
</style>
<style id="wp-block-library-inline-css">
:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-color]){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
</style>
<link rel='stylesheet' id='mpp_gutenberg-css' href='https://devblogs.microsoft.com/dotnet/wp-content/plugins/metronet-profile-picture/dist/blocks.style.build.css?ver=2.6.4' media='all' />
<link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='devblogs-lightbox-css-css' href='https://devblogs.microsoft.com/dotnet/wp-content/plugins/devblogs-lightbox/assets/css/lightbox.min.css?ver=1770924660' media='all' />
<noscript><link rel='stylesheet' id='devblogs-lightbox-css-css' href='https://devblogs.microsoft.com/dotnet/wp-content/plugins/devblogs-lightbox/assets/css/lightbox.min.css?ver=1770924660' media='all' />
</noscript><link rel='stylesheet' id='newsletter-css' href='https://devblogs.microsoft.com/dotnet/wp-content/plugins/newsletter/style.css?ver=9.3.5' media='all' />
<link rel='stylesheet' id='newsletter-country-sync-css-css' href='https://devblogs.microsoft.com/dotnet/wp-content/plugins/newsletter-country-sync/css/newsletter-style.css?ver=1770924660' media='all' />
<link rel='preload' as='style' onload="this.onload=null;this.rel='stylesheet'" id='devblogs-evo-styles-css' href='https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/css/theme.min.css?ver=1.4.0.1784230473' media='all' />
<noscript><link rel='stylesheet' id='devblogs-evo-styles-css' href='https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/css/theme.min.css?ver=1.4.0.1784230473' media='all' />
</noscript><link rel='stylesheet' id='fabric-icons-css' href='https://devblogs.microsoft.com/dotnet/wp-content/plugins/fabric-icon-manager/assets/css/fabric-icons.css?ver=1699358813' media='all' />
<link rel='stylesheet' id='block-custom-css' href='https://devblogs.microsoft.com/dotnet/wp-content/plugins/devblogs-blocks/assets/block-custom.css' media='all' />
<script type="text/javascript">
window._nslDOMReady = (function () {
const executedCallbacks = new Set();
return function (callback) {
/**
* Third parties might dispatch DOMContentLoaded events, so we need to ensure that we only run our callback once!
*/
if (executedCallbacks.has(callback)) return;
const wrappedCallback = function () {
if (executedCallbacks.has(callback)) return;
executedCallbacks.add(callback);
callback();
};
if (document.readyState === "complete" || document.readyState === "interactive") {
wrappedCallback();
} else {
document.addEventListener("DOMContentLoaded", wrappedCallback);
}
};
})();
</script><script id="jquery-core-js" src="https://devblogs.microsoft.com/dotnet/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
<link rel="https://api.w.org/" href="https://devblogs.microsoft.com/dotnet/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://devblogs.microsoft.com/dotnet/wp-json/wp/v2/categories/7233" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://devblogs.microsoft.com/dotnet/xmlrpc.php?rsd" />
<script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Dev Blogs","item":"https:\/\/devblogs.microsoft.com\/"},{"@type":"ListItem","position":2,"name":".NET Blog","item":"https:\/\/devblogs.microsoft.com\/dotnet\/"},{"@type":"ListItem","position":3,"name":"Category: .NET MAUI","item":"https:\/\/devblogs.microsoft.com\/dotnet\/category\/maui\/"}]}</script><meta name="generator" content="performance-lab 4.2.0; plugins: webp-uploads">
<meta name="generator" content="webp-uploads 2.7.1">
<style>#respond h3#reply-title{display:none;}</style><link rel="icon" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/10/Microsoft-favicon-48x48.jpg" sizes="32x32" />
<link rel="icon" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/10/Microsoft-favicon-300x300.jpg" sizes="192x192" />
<link rel="apple-touch-icon" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/10/Microsoft-favicon-300x300.jpg" />
<meta name="msapplication-TileImage" content="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/10/Microsoft-favicon-300x300.jpg" />
<style type="text/css">div.nsl-container[data-align="left"] {
text-align: left;
}
div.nsl-container[data-align="center"] {
text-align: center;
}
div.nsl-container[data-align="right"] {
text-align: right;
}
div.nsl-container div.nsl-container-buttons a[data-plugin="nsl"] {
text-decoration: none;
box-shadow: none;
border: 0;
}
div.nsl-container .nsl-container-buttons {
display: flex;
padding: 5px 0;
}
div.nsl-container.nsl-container-block .nsl-container-buttons {
display: inline-grid;
grid-template-columns: minmax(145px, auto);
}
div.nsl-container-block-fullwidth .nsl-container-buttons {
flex-flow: column;
align-items: center;
}
div.nsl-container-block-fullwidth .nsl-container-buttons a,
div.nsl-container-block .nsl-container-buttons a {
flex: 1 1 auto;
display: block;
margin: 5px 0;
width: 100%;
}
div.nsl-container-inline {
margin: -5px;
text-align: left;
}
div.nsl-container-inline .nsl-container-buttons {
justify-content: center;
flex-wrap: wrap;
}
div.nsl-container-inline .nsl-container-buttons a {
margin: 5px;
display: inline-block;
}
div.nsl-container-grid .nsl-container-buttons {
flex-flow: row;
align-items: center;
flex-wrap: wrap;
}
div.nsl-container-grid .nsl-container-buttons a {
flex: 1 1 auto;
display: block;
margin: 5px;
max-width: 280px;
width: 100%;
}
@media only screen and (min-width: 650px) {
div.nsl-container-grid .nsl-container-buttons a {
width: auto;
}
}
div.nsl-container .nsl-button {
cursor: pointer;
vertical-align: top;
border-radius: 4px;
}
div.nsl-container .nsl-button-default {
color: #fff;
display: flex;
}
div.nsl-container .nsl-button-icon {
display: inline-block;
}
div.nsl-container .nsl-button-svg-container {
flex: 0 0 auto;
padding: 8px;
display: flex;
align-items: center;
}
div.nsl-container svg {
height: 24px;
width: 24px;
vertical-align: top;
}
div.nsl-container .nsl-button-default div.nsl-button-label-container {
margin: 0 24px 0 12px;
padding: 10px 0;
font-family: Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 20px;
letter-spacing: .25px;
overflow: hidden;
text-align: center;
text-overflow: clip;
white-space: nowrap;
flex: 1 1 auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-transform: none;
display: inline-block;
}
div.nsl-container .nsl-button-google[data-skin="light"] {
box-shadow: inset 0 0 0 1px #747775;
color: #1f1f1f;
}
div.nsl-container .nsl-button-google[data-skin="dark"] {
box-shadow: inset 0 0 0 1px #8E918F;
color: #E3E3E3;
}
div.nsl-container .nsl-button-google[data-skin="neutral"] {
color: #1F1F1F;
}
div.nsl-container .nsl-button-google div.nsl-button-label-container {
font-family: "Roboto Medium", Roboto, Helvetica, Arial, sans-serif;
}
div.nsl-container .nsl-button-apple .nsl-button-svg-container {
padding: 0 6px;
}
div.nsl-container .nsl-button-apple .nsl-button-svg-container svg {
height: 40px;
width: auto;
}
div.nsl-container .nsl-button-apple[data-skin="light"] {
color: #000;
box-shadow: 0 0 0 1px #000;
}
div.nsl-container .nsl-button-facebook[data-skin="white"] {
color: #000;
box-shadow: inset 0 0 0 1px #000;
}
div.nsl-container .nsl-button-facebook[data-skin="light"] {
color: #1877F2;
box-shadow: inset 0 0 0 1px #1877F2;
}
div.nsl-container .nsl-button-spotify[data-skin="white"] {
color: #191414;
box-shadow: inset 0 0 0 1px #191414;
}
div.nsl-container .nsl-button-apple div.nsl-button-label-container {
font-size: 17px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
div.nsl-container .nsl-button-slack div.nsl-button-label-container {
font-size: 17px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
div.nsl-container .nsl-button-slack[data-skin="light"] {
color: #000000;
box-shadow: inset 0 0 0 1px #DDDDDD;
}
div.nsl-container .nsl-button-tiktok[data-skin="light"] {
color: #161823;
box-shadow: 0 0 0 1px rgba(22, 24, 35, 0.12);
}
div.nsl-container .nsl-button-kakao {
color: rgba(0, 0, 0, 0.85);
}
.nsl-clear {
clear: both;
}
.nsl-container {
clear: both;
}
.nsl-disabled-provider .nsl-button {
filter: grayscale(1);
opacity: 0.8;
}
/*Button align start*/
div.nsl-container-inline[data-align="left"] .nsl-container-buttons {
justify-content: flex-start;
}
div.nsl-container-inline[data-align="center"] .nsl-container-buttons {
justify-content: center;
}
div.nsl-container-inline[data-align="right"] .nsl-container-buttons {
justify-content: flex-end;
}
div.nsl-container-grid[data-align="left"] .nsl-container-buttons {
justify-content: flex-start;
}
div.nsl-container-grid[data-align="center"] .nsl-container-buttons {
justify-content: center;
}
div.nsl-container-grid[data-align="right"] .nsl-container-buttons {
justify-content: flex-end;
}
div.nsl-container-grid[data-align="space-around"] .nsl-container-buttons {
justify-content: space-around;
}
div.nsl-container-grid[data-align="space-between"] .nsl-container-buttons {
justify-content: space-between;
}
/* Button align end*/
/* Redirect */
#nsl-redirect-overlay {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
position: fixed;
z-index: 1000000;
left: 0;
top: 0;
width: 100%;
height: 100%;
backdrop-filter: blur(1px);
background-color: RGBA(0, 0, 0, .32);;
}
#nsl-redirect-overlay-container {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-color: white;
padding: 30px;
border-radius: 10px;
}
#nsl-redirect-overlay-spinner {
content: '';
display: block;
margin: 20px;
border: 9px solid RGBA(0, 0, 0, .6);
border-top: 9px solid #fff;
border-radius: 50%;
box-shadow: inset 0 0 0 1px RGBA(0, 0, 0, .6), 0 0 0 1px RGBA(0, 0, 0, .6);
width: 40px;
height: 40px;
animation: nsl-loader-spin 2s linear infinite;
}
@keyframes nsl-loader-spin {
0% {
transform: rotate(0deg)
}
to {
transform: rotate(360deg)
}
}
#nsl-redirect-overlay-title {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
font-size: 18px;
font-weight: bold;
color: #3C434A;
}
#nsl-redirect-overlay-text {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
text-align: center;
font-size: 14px;
color: #3C434A;
}
/* Redirect END*/</style><style type="text/css">/* Notice fallback */
#nsl-notices-fallback {
position: fixed;
right: 10px;
top: 10px;
z-index: 10000;
}
.admin-bar #nsl-notices-fallback {
top: 42px;
}
#nsl-notices-fallback > div {
position: relative;
background: #fff;
border-left: 4px solid #fff;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
margin: 5px 15px 2px;
padding: 1px 20px;
}
#nsl-notices-fallback > div.error {
display: block;
border-left-color: #dc3232;
}
#nsl-notices-fallback > div.updated {
display: block;
border-left-color: #46b450;
}
#nsl-notices-fallback p {
margin: .5em 0;
padding: 2px;
}
#nsl-notices-fallback > div:after {
position: absolute;
right: 5px;
top: 5px;
content: '\00d7';
display: block;
height: 16px;
width: 16px;
line-height: 16px;
text-align: center;
font-size: 20px;
cursor: pointer;
}</style> <!-- Start JSLL SHIM(1DS) Tags -->
<script src="https://js.monitor.azure.com/scripts/c/ms.jsll-4.min.js" type="text/javascript" defer></script>
<script type="text/javascript">
var config = {
useDefaultContentName: true,
useShortNameForContentBlob: false,
// disablePageUnloadEvents: [0, 1, 2], // Try at top level for JSLL
autoCapture: {
pageView: true,
onLoad: true,
lineage: true,
click: true,
scroll: true,
resize: false,
jsError: true,
addin: true,
perf: true
},
disableUnloadBeacon: true, // Disable deprecated unload event listeners
urlCollectHash: true,
urlCollectQuery: true,
instrumentationKey: "31b03416b80d4fec81330cf396b8bf63-2db31b2d-ee29-4371-af87-871cba555f5a-7031",
coreData: {
appId: "MSDevBlogs",
},
// Initially set the GPC_DataSharingOptIn flag property in 1DS (One Data Source) to false
advancedConfig: {
propertyConfiguration: {
gpcDataSharingOptIn: false
}
},
callback: {
pageName: function () { return document.title },
contentUpdatePageTags: function () {
return {
metaTags: {
'ver': theme
},
}
},
pageActionContentTags: function () {
return {
metaTags: {
'ver': theme
},
}
},
pageActionPageTags: function () {
return {
"pageType": "category",
metaTags: {
'ver': theme
},
}
},
pageViewPageTags: function () {
return {
"pageType": "category",
}
},
}
};
// The JSLL script is now deferred, so it may not be ready while this inline script runs during parse; init immediately if available, otherwise on DOMContentLoaded (deferred scripts always execute before that event).
if (window.awa && typeof awa.init === 'function') {
awa.init(config);
} else {
document.addEventListener('DOMContentLoaded', function () { awa.init(config); });
}
// Suppress Microsoft JSLL v4 internal unload event deprecation warnings
// TODO: Remove when Microsoft updates JSLL to fix internal Application Insights Core JS deprecation
(function() {
const originalWarn = console.warn;
console.warn = function(...args) {
const message = args.join(' ');
// Suppress specific deprecation warning from Microsoft's Application Insights SDK
// Pattern specifically targets Microsoft SDK file path to avoid false positives
if (message.includes('EventHelpers.js') && message.includes('deprecated')) {
// Optionally log once for debugging (comment out for production)
// if (!window._jsllWarningSuppressed) {
// console.log('[Suppressed JSLL SDK deprecation warning]');
// window._jsllWarningSuppressed = true;
// }
return;
}
originalWarn.apply(console, args);
};
})();
</script>
<!-- END JSLL SHIM(1DS) Integration -->
<script>
/*! lazysizes - v4.1.3 | For lazy loading images */
!function (a, b) { var c = b(a, a.document); a.lazySizes = c, "object" == typeof module && module.exports && (module.exports = c) }(window, function (a, b) { "use strict"; if (b.getElementsByClassName) { var c, d, e = b.documentElement, f = a.Date, g = a.HTMLPictureElement, h = "addEventListener", i = "getAttribute", j = a[h], k = a.setTimeout, l = a.requestAnimationFrame || k, m = a.requestIdleCallback, n = /^picture$/i, o = ["load", "error", "lazyincluded", "_lazyloaded"], p = {}, q = Array.prototype.forEach, r = function (a, b) { return p[b] || (p[b] = new RegExp("(\\s|^)" + b + "(\\s|$)")), p[b].test(a[i]("class") || "") && p[b] }, s = function (a, b) { r(a, b) || a.setAttribute("class", (a[i]("class") || "").trim() + " " + b) }, t = function (a, b) { var c; (c = r(a, b)) && a.setAttribute("class", (a[i]("class") || "").replace(c, " ")) }, u = function (a, b, c) { var d = c ? h : "removeEventListener"; c && u(a, b), o.forEach(function (c) { a[d](c, b) }) }, v = function (a, d, e, f, g) { var h = b.createEvent("Event"); return e || (e = {}), e.instance = c, h.initEvent(d, !f, !g), h.detail = e, a.dispatchEvent(h), h }, w = function (b, c) { var e; !g && (e = a.picturefill || d.pf) ? (c && c.src && !b[i]("srcset") && b.setAttribute("srcset", c.src), e({ reevaluate: !0, elements: [b] })) : c && c.src && (b.src = c.src) }, x = function (a, b) { return (getComputedStyle(a, null) || {})[b] }, y = function (a, b, c) { for (c = c || a.offsetWidth; c < d.minSize && b && !a._lazysizesWidth;)c = b.offsetWidth, b = b.parentNode; return c }, z = function () { var a, c, d = [], e = [], f = d, g = function () { var b = f; for (f = d.length ? e : d, a = !0, c = !1; b.length;)b.shift()(); a = !1 }, h = function (d, e) { a && !e ? d.apply(this, arguments) : (f.push(d), c || (c = !0, (b.hidden ? k : l)(g))) }; return h._lsFlush = g, h }(), A = function (a, b) { return b ? function () { z(a) } : function () { var b = this, c = arguments; z(function () { a.apply(b, c) }) } }, B = function (a) { var b, c = 0, e = d.throttleDelay, g = d.ricTimeout, h = function () { b = !1, c = f.now(), a() }, i = m && g > 49 ? function () { m(h, { timeout: g }), g !== d.ricTimeout && (g = d.ricTimeout) } : A(function () { k(h) }, !0); return function (a) { var d; (a = a === !0) && (g = 33), b || (b = !0, d = e - (f.now() - c), 0 > d && (d = 0), a || 9 > d ? i() : k(i, d)) } }, C = function (a) { var b, c, d = 99, e = function () { b = null, a() }, g = function () { var a = f.now() - c; d > a ? k(g, d - a) : (m || e)(e) }; return function () { c = f.now(), b || (b = k(g, d)) } }; !function () { var b, c = { lazyClass: "lazyload", loadedClass: "lazyloaded", loadingClass: "lazyloading", preloadClass: "lazypreload", errorClass: "lazyerror", autosizesClass: "lazyautosizes", srcAttr: "data-src", srcsetAttr: "data-srcset", sizesAttr: "data-sizes", minSize: 40, customMedia: {}, init: !0, expFactor: 1.5, hFac: .8, loadMode: 2, loadHidden: !0, ricTimeout: 0, throttleDelay: 125 }; d = a.lazySizesConfig || a.lazysizesConfig || {}; for (b in c) b in d || (d[b] = c[b]); a.lazySizesConfig = d, k(function () { d.init && F() }) }(); var D = function () { var g, l, m, o, p, y, D, F, G, H, I, J, K, L, M = /^img$/i, N = /^iframe$/i, O = "onscroll" in a && !/(gle|ing)bot/.test(navigator.userAgent), P = 0, Q = 0, R = 0, S = -1, T = function (a) { R--, a && a.target && u(a.target, T), (!a || 0 > R || !a.target) && (R = 0) }, U = function (a, c) { var d, f = a, g = "hidden" == x(b.body, "visibility") || "hidden" != x(a.parentNode, "visibility") && "hidden" != x(a, "visibility"); for (F -= c, I += c, G -= c, H += c; g && (f = f.offsetParent) && f != b.body && f != e;)g = (x(f, "opacity") || 1) > 0, g && "visible" != x(f, "overflow") && (d = f.getBoundingClientRect(), g = H > d.left && G < d.right && I > d.top - 1 && F < d.bottom + 1); return g }, V = function () { var a, f, h, j, k, m, n, p, q, r = c.elements; if ((o = d.loadMode) && 8 > R && (a = r.length)) { f = 0, S++, null == K && ("expand" in d || (d.expand = e.clientHeight > 500 && e.clientWidth > 500 ? 500 : 370), J = d.expand, K = J * d.expFactor), K > Q && 1 > R && S > 2 && o > 2 && !b.hidden ? (Q = K, S = 0) : Q = o > 1 && S > 1 && 6 > R ? J : P; for (; a > f; f++)if (r[f] && !r[f]._lazyRace) if (O) if ((p = r[f][i]("data-expand")) && (m = 1 * p) || (m = Q), q !== m && (y = innerWidth + m * L, D = innerHeight + m, n = -1 * m, q = m), h = r[f].getBoundingClientRect(), (I = h.bottom) >= n && (F = h.top) <= D && (H = h.right) >= n * L && (G = h.left) <= y && (I || H || G || F) && (d.loadHidden || "hidden" != x(r[f], "visibility")) && (l && 3 > R && !p && (3 > o || 4 > S) || U(r[f], m))) { if (ba(r[f]), k = !0, R > 9) break } else !k && l && !j && 4 > R && 4 > S && o > 2 && (g[0] || d.preloadAfterLoad) && (g[0] || !p && (I || H || G || F || "auto" != r[f][i](d.sizesAttr))) && (j = g[0] || r[f]); else ba(r[f]); j && !k && ba(j) } }, W = B(V), X = function (a) { s(a.target, d.loadedClass), t(a.target, d.loadingClass), u(a.target, Z), v(a.target, "lazyloaded") }, Y = A(X), Z = function (a) { Y({ target: a.target }) }, $ = function (a, b) { try { a.contentWindow.location.replace(b) } catch (c) { a.src = b } }, _ = function (a) { var b, c = a[i](d.srcsetAttr); (b = d.customMedia[a[i]("data-media") || a[i]("media")]) && a.setAttribute("media", b), c && a.setAttribute("srcset", c) }, aa = A(function (a, b, c, e, f) { var g, h, j, l, o, p; (o = v(a, "lazybeforeunveil", b)).defaultPrevented || (e && (c ? s(a, d.autosizesClass) : a.setAttribute("sizes", e)), h = a[i](d.srcsetAttr), g = a[i](d.srcAttr), f && (j = a.parentNode, l = j && n.test(j.nodeName || "")), p = b.firesLoad || "src" in a && (h || g || l), o = { target: a }, p && (u(a, T, !0), clearTimeout(m), m = k(T, 2500), s(a, d.loadingClass), u(a, Z, !0)), l && q.call(j.getElementsByTagName("source"), _), h ? a.setAttribute("srcset", h) : g && !l && (N.test(a.nodeName) ? $(a, g) : a.src = g), f && (h || l) && w(a, { src: g })), a._lazyRace && delete a._lazyRace, t(a, d.lazyClass), z(function () { (!p || a.complete && a.naturalWidth > 1) && (p ? T(o) : R--, X(o)) }, !0) }), ba = function (a) { var b, c = M.test(a.nodeName), e = c && (a[i](d.sizesAttr) || a[i]("sizes")), f = "auto" == e; (!f && l || !c || !a[i]("src") && !a.srcset || a.complete || r(a, d.errorClass) || !r(a, d.lazyClass)) && (b = v(a, "lazyunveilread").detail, f && E.updateElem(a, !0, a.offsetWidth), a._lazyRace = !0, R++, aa(a, b, f, e, c)) }, ca = function () { if (!l) { if (f.now() - p < 999) return void k(ca, 999); var a = C(function () { d.loadMode = 3, W() }); l = !0, d.loadMode = 3, W(), j("scroll", function () { 3 == d.loadMode && (d.loadMode = 2), a() }, !0) } }; return { _: function () { p = f.now(), c.elements = b.getElementsByClassName(d.lazyClass), g = b.getElementsByClassName(d.lazyClass + " " + d.preloadClass), L = d.hFac, j("scroll", W, !0), j("resize", W, !0), a.MutationObserver ? new MutationObserver(W).observe(e, { childList: !0, subtree: !0, attributes: !0 }) : (e[h]("DOMNodeInserted", W, !0), e[h]("DOMAttrModified", W, !0), setInterval(W, 999)), j("hashchange", W, !0), ["focus", "mouseover", "click", "load", "transitionend", "animationend", "webkitAnimationEnd"].forEach(function (a) { b[h](a, W, !0) }), /d$|^c/.test(b.readyState) ? ca() : (j("load", ca), b[h]("DOMContentLoaded", W), k(ca, 2e4)), c.elements.length ? (V(), z._lsFlush()) : W() }, checkElems: W, unveil: ba } }(), E = function () { var a, c = A(function (a, b, c, d) { var e, f, g; if (a._lazysizesWidth = d, d += "px", a.setAttribute("sizes", d), n.test(b.nodeName || "")) for (e = b.getElementsByTagName("source"), f = 0, g = e.length; g > f; f++)e[f].setAttribute("sizes", d); c.detail.dataAttr || w(a, c.detail) }), e = function (a, b, d) { var e, f = a.parentNode; f && (d = y(a, f, d), e = v(a, "lazybeforesizes", { width: d, dataAttr: !!b }), e.defaultPrevented || (d = e.detail.width, d && d !== a._lazysizesWidth && c(a, f, e, d))) }, f = function () { var b, c = a.length; if (c) for (b = 0; c > b; b++)e(a[b]) }, g = C(f); return { _: function () { a = b.getElementsByClassName(d.autosizesClass), j("resize", g) }, checkElems: g, updateElem: e } }(), F = function () { F.i || (F.i = !0, E._(), D._()) }; return c = { cfg: d, autoSizer: E, loader: D, init: F, uP: w, aC: s, rC: t, hC: r, fire: v, gW: y, rAF: z } } });
</script>
<div id="sr-announcer" class="visually-hidden" role="status" aria-live="polite"></div>
<style id="global-styles-inline-css">
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:root { --wp--style--global--content-size: 840px;--wp--style--global--wide-size: 840px; }:where(body) { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
/*# sourceURL=global-styles-inline-css */
</style>
</head>
<body class="archive category category-maui category-7233 wp-theme-devblogs-evo">
<!-- Star cookies banner -->
<script src="https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js" defer></script>
<div id="cookie-banner"></div>
<!-- end cookies banner -->
<!-- UHF header -->
<uhf-header locale="en-us" partnerId="DEV_Blogs" headerId="Dev_header-main" theme="light">
<a slot="skip-link" class="uhf-skip-link" href="#mainContent" data-m='{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "SkipToMain", "cN": "Skip to content_nonnav", "ecn": "Skip to content_nonnav", "ehn": "SkipToMain"}'>Skip to main content</a>
<uhf-brand slot="brand">
<a href="https://www.microsoft.com" class="uhf-microsoft-logo" slot="microsoft-logo" aria-label="Microsoft" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Anchor", "cN": "GlobalNav_Logo_cont", "ecn": "GlobalNav_Logo_cont", "ehn": "Anchor"}">
<img src="https://uhf.microsoft.com/images/microsoft/RE1Mu3b.png" alt="Microsoft" />
</a>
<a href="https://devblogs.microsoft.com" class="uhf-site-logo" slot="brand-logo" aria-label="Dev Blogs" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Anchor", "cN": "CatNav_Logo_cont", "ecn": "CatNav_Logo_cont", "ehn": "Anchor"}">
<span>Dev Blogs</span> </a>
</uhf-brand>
<uhf-contextual-nav
slot="contextual-nav"
overflowText="More"
brand="Dev Blogs"
homeUrl="https://devblogs.microsoft.com"
homeText="Home"
data-nav-label="Contextual menu"
theme=cat-theme-blue
>
<a class="uhf-nav-item uhf-nav-link" href="https://devblogs.microsoft.com/ai" id="AI" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "AI", "cN": "CatNav_AI_nav", "ecn": "CatNav_AI_nav", "ehn": "AI"}">AI</a>
<uhf-dropdown
text=".NET"
id="dot-net"
data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_nav", "ecn": "CatNav_.NET_nav", "ehn": ".NET"}"
>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/dotnet/" id="all-dot-net-posts" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_All .NET posts_nav", "ecn": "CatNav_.NET_All .NET posts_nav", "ehn": ".NET"}">All .NET posts</a>
<uhf-flyout text="Frameworks" id="Frameworks" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_Frameworks_nav", "ecn": "CatNav_.NET_Frameworks_nav", "ehn": ".NET"}">
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/dotnet/category/maui/" id="dot-net-maui" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_Frameworks_.NET MAUI_nav", "ecn": "CatNav_.NET_Frameworks_.NET MAUI_nav", "ehn": ".NET"}">.NET MAUI</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/dotnet/category/dotnet-aspire/" id="asp-net-core" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_Frameworks_ASP.NET Core_nav", "ecn": "CatNav_.NET_Frameworks_ASP.NET Core_nav", "ehn": ".NET"}">ASP.NET Core</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/dotnet/category/blazor/" id="Blazor" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_Frameworks_Blazor_nav", "ecn": "CatNav_.NET_Frameworks_Blazor_nav", "ehn": ".NET"}">Blazor</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/dotnet/category/entity-framework/" id="entity-framework" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_Frameworks_Entity Framework_nav", "ecn": "CatNav_.NET_Frameworks_Entity Framework_nav", "ehn": ".NET"}">Entity Framework</a>
</uhf-flyout>
<uhf-flyout text="Languages" id="Languages" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_Languages_nav", "ecn": "CatNav_.NET_Languages_nav", "ehn": ".NET"}">
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/cppblog/" id="cpp" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_Languages_C++_nav", "ecn": "CatNav_.NET_Languages_C++_nav", "ehn": ".NET"}">C++</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/dotnet/category/csharp/" id="C#" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_Languages_C#_nav", "ecn": "CatNav_.NET_Languages_C#_nav", "ehn": ".NET"}">C#</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/dotnet/category/fsharp/" id="F#" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_Languages_F#_nav", "ecn": "CatNav_.NET_Languages_F#_nav", "ehn": ".NET"}">F#</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/typescript/" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_Languages_TypeScript_nav", "ecn": "CatNav_.NET_Languages_TypeScript_nav", "ehn": ".NET"}">TypeScript</a>
</uhf-flyout>
<uhf-flyout text="Tools" id="Tools" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_Tools_nav", "ecn": "CatNav_.NET_Tools_nav", "ehn": ".NET"}">
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/dotnet/category/nuget/" id="NuGet" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_Tools_NuGet_nav", "ecn": "CatNav_.NET_Tools_NuGet_nav", "ehn": ".NET"}">NuGet</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/dotnet/category/maintenance-and-updates/" id="Servicing" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_Tools_Servicing_nav", "ecn": "CatNav_.NET_Tools_Servicing_nav", "ehn": ".NET"}">Servicing</a>
</uhf-flyout> <a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/dotnet-ch/" id="dot-net-blog-in-chinese" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": ".NET", "cN": "CatNav_.NET_.NET Blog in Chinese_nav", "ecn": "CatNav_.NET_.NET Blog in Chinese_nav", "ehn": ".NET"}">.NET Blog in Chinese</a>
</uhf-dropdown>
<uhf-dropdown
text="Developer"
id="Developer"
data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_nav", "ecn": "CatNav_Developer_nav", "ehn": "Developer"}"
>
<a class="uhf-nav-item uhf-dropdown-link" href="https://developer.microsoft.com/blog" id="microsoft-for-developers" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_Microsoft for Developers_nav", "ecn": "CatNav_Developer_Microsoft for Developers_nav", "ehn": "Developer"}">Microsoft for Developers</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/agent-framework/" id="agent-framework" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_Agent Framework_nav", "ecn": "CatNav_Developer_Agent Framework_nav", "ehn": "Developer"}">Agent Framework</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/develop-from-the-cloud/" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_Develop from the cloud_nav", "ecn": "CatNav_Developer_Develop from the cloud_nav", "ehn": "Developer"}">Develop from the cloud</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/xcode/" id="Xcode" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_Xcode_nav", "ecn": "CatNav_Developer_Xcode_nav", "ehn": "Developer"}">Xcode</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/ise/" id="ise-developer" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_ISE Developer_nav", "ecn": "CatNav_Developer_ISE Developer_nav", "ehn": "Developer"}">ISE Developer</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/typescript/" id="TypeScript" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_TypeScript_nav", "ecn": "CatNav_Developer_TypeScript_nav", "ehn": "Developer"}">TypeScript</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/powershell/" id="PowerShell" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_PowerShell_nav", "ecn": "CatNav_Developer_PowerShell_nav", "ehn": "Developer"}">PowerShell</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/python/" id="Python" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_Python_nav", "ecn": "CatNav_Developer_Python_nav", "ehn": "Developer"}">Python</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/java/" id="java" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_Java_nav", "ecn": "CatNav_Developer_Java_nav", "ehn": "Developer"}">Java</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/java-ch/" id="java-blog-in-chinese" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_Java Blog in Chinese_nav", "ecn": "CatNav_Developer_Java Blog in Chinese_nav", "ehn": "Developer"}">Java Blog in Chinese</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/go/" id="go" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_Go_nav", "ecn": "CatNav_Developer_Go_nav", "ehn": "Developer"}">Go</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://blogs.windows.com/msedgedev/" id="microsoft-edge-dev" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_Microsoft Edge Dev_nav", "ecn": "CatNav_Developer_Microsoft Edge Dev_nav", "ehn": "Developer"}">Microsoft Edge Dev</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/microsoft365dev/" id="microsoft-365-developer" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_Microsoft 365 Developer_nav", "ecn": "CatNav_Developer_Microsoft 365 Developer_nav", "ehn": "Developer"}">Microsoft 365 Developer</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/identity/" id="microsoft-entra-identity-developer" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_Microsoft Entra Identity Developer_nav", "ecn": "CatNav_Developer_Microsoft Entra Identity Developer_nav", "ehn": "Developer"}">Microsoft Entra Identity Developer</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/entrapowershell/" id="microsoft-entra-powershell" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Developer", "cN": "CatNav_Developer_Microsoft Entra PowerShell_nav", "ecn": "CatNav_Developer_Microsoft Entra PowerShell_nav", "ehn": "Developer"}">Microsoft Entra PowerShell</a>
</uhf-dropdown>
<uhf-dropdown
text="Platform and Tools"
id="platform-development"
data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_nav", "ecn": "CatNav_Platform and Tools_nav", "ehn": "Platform and Tools"}"
>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/visualstudio/" id="visual-studio" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Visual Studio_nav", "ecn": "CatNav_Platform and Tools_Visual Studio_nav", "ehn": "Platform and Tools"}">Visual Studio</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/vscode-blog" id="visual-studio-code" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Visual Studio Code_nav", "ecn": "CatNav_Platform and Tools_Visual Studio Code_nav", "ehn": "Platform and Tools"}">Visual Studio Code</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/aspire/" id="aspire" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Aspire_nav", "ecn": "CatNav_Platform and Tools_Aspire_nav", "ehn": "Platform and Tools"}">Aspire</a>
<uhf-flyout text="Azure" id="azure" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Azure_nav", "ecn": "CatNav_Platform and Tools_Azure_nav", "ehn": "Platform and Tools"}">
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/all-things-azure/" id="all-things-azure-1" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Azure_All things Azure_nav", "ecn": "CatNav_Platform and Tools_Azure_All things Azure_nav", "ehn": "Platform and Tools"}">All things Azure</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/azure-sdk/" id="azure-sdk" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Azure_Azure SDK_nav", "ecn": "CatNav_Platform and Tools_Azure_Azure SDK_nav", "ehn": "Platform and Tools"}">Azure SDK</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/azure-vm-runtime/" id="azure-vm-runtime" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Azure_Azure VM Runtime Team_nav", "ecn": "CatNav_Platform and Tools_Azure_Azure VM Runtime Team_nav", "ehn": "Platform and Tools"}">Azure VM Runtime Team</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://azure.microsoft.com/blog/" id="microsoft-azure" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Azure_Microsoft Azure_nav", "ecn": "CatNav_Platform and Tools_Azure_Microsoft Azure_nav", "ehn": "Platform and Tools"}">Microsoft Azure</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/cosmosdb/" id="azure-cosmos-db" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Azure_Azure Cosmos DB_nav", "ecn": "CatNav_Platform and Tools_Azure_Azure Cosmos DB_nav", "ehn": "Platform and Tools"}">Azure Cosmos DB</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/documentdb/" id="azure-document-db" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Azure_Azure DocumentDB_nav", "ecn": "CatNav_Platform and Tools_Azure_Azure DocumentDB_nav", "ehn": "Platform and Tools"}">Azure DocumentDB</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://cloudblogs.microsoft.com/sqlserver/?product=azure-data-studio" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Azure_Azure Data Studio_nav", "ecn": "CatNav_Platform and Tools_Azure_Azure Data Studio_nav", "ehn": "Platform and Tools"}">Azure Data Studio</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/azure-sql/" id="azure-sql" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Azure_Azure SQL_nav", "ecn": "CatNav_Platform and Tools_Azure_Azure SQL_nav", "ehn": "Platform and Tools"}">Azure SQL</a>
</uhf-flyout> <a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/devops/" id="devops" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_DevOps_nav", "ecn": "CatNav_Platform and Tools_DevOps_nav", "ehn": "Platform and Tools"}">DevOps</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/directx/" id="directx" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_DirectX_nav", "ecn": "CatNav_Platform and Tools_DirectX_nav", "ehn": "Platform and Tools"}">DirectX</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/foundry/" id="azure-aI-foundry" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Microsoft Foundry_nav", "ecn": "CatNav_Platform and Tools_Microsoft Foundry_nav", "ehn": "Platform and Tools"}">Microsoft Foundry</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/powerplatform/" id="power-platform" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Platform and Tools", "cN": "CatNav_Platform and Tools_Power Platform_nav", "ecn": "CatNav_Platform and Tools_Power Platform_nav", "ehn": "Platform and Tools"}">Power Platform</a>
</uhf-dropdown>
<uhf-dropdown
text="Data"
id="data-development"
data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Data", "cN": "CatNav_Data_nav", "ecn": "CatNav_Date_nav", "ehn": "Date"}"
>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/odata/" id="OData" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Data", "cN": "CatNav_Data_OData_nav", "ecn": "CatNav_Date_OData_nav", "ehn": "Date"}">OData</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/udm/" id="udm" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Data", "cN": "CatNav_Data_Unified Data Model (IDEAs)_nav", "ecn": "CatNav_Date_Unified Data Model (IDEAs)_nav", "ehn": "Date"}">Unified Data Model (IDEAs)</a>
</uhf-dropdown>
<uhf-dropdown
text="Windows"
id="windows"
data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Windows", "cN": "CatNav_Windows_nav", "ecn": "CatNav_Windows_nav", "ehn": "Windows"}"
>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/commandline/" id="windows-command-line" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Windows", "cN": "CatNav_Windows_Windows Command Line_nav", "ecn": "CatNav_Windows_Windows Command Line_nav", "ehn": "Windows"}">Windows Command Line</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/ifdef-windows/" id="pax-windows" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Windows", "cN": "CatNav_Windows_#ifdef Windows_nav", "ecn": "CatNav_Windows_#ifdef Windows_nav", "ehn": "Windows"}">#ifdef Windows</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/insidemsix/" id="inside-msix" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Windows", "cN": "CatNav_Windows_Inside MSIX_nav", "ecn": "CatNav_Windows_Inside MSIX_nav", "ehn": "Windows"}">Inside MSIX</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/windows-music-dev/" id="midi-music" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Windows", "cN": "CatNav_Windows_MIDI and music_nav", "ecn": "CatNav_Windows_MIDI and music_nav", "ehn": "Windows"}">MIDI and music</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/react-native/" id="react-native-for-windows" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Windows", "cN": "CatNav_Windows_React Native_nav", "ecn": "CatNav_Windows_React Native_nav", "ehn": "Windows"}">React Native</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://devblogs.microsoft.com/oldnewthing/" id="old-new-thing" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Windows", "cN": "CatNav_Windows_The Old New Thing_nav", "ecn": "CatNav_Windows_The Old New Thing_nav", "ehn": "Windows"}">The Old New Thing</a>
<a class="uhf-nav-item uhf-dropdown-link" href="https://blogs.windows.com/windowsdeveloper/" id="windows-developer" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalHeader", "hn": "Windows", "cN": "CatNav_Windows_Windows Developer_nav", "ecn": "CatNav_Windows_Windows Developer_nav", "ehn": "Windows"}">Windows Developer</a>
</uhf-dropdown></uhf-contextual-nav> <uhf-actions slot="actions">
<uhf-search
slot="search"
placeholder="Search"
search-label="Search"
cancel-label="Cancel"
searchUrl="/search"
autoSuggestUrl="https://www.microsoft.com/msstoreapiprod/api/autosuggest"
queryParameterName="query"
>
</uhf-search>
</uhf-actions>
</uhf-header><style>
uhf-header:not(:defined) {
display: block;
height: 54px;
}
uhf-brand:not(:defined),
uhf-contextual-nav:not(:defined),
uhf-actions:not(:defined),
uhf-global-nav:not(:defined),
uhf-search:not(:defined),
uhf-mecontrol:not(:defined),
uhf-cart:not(:defined),
uhf-dropdown:not(:defined),
uhf-popout:not(:defined) {
visibility: hidden;
}
</style>
<link rel="stylesheet" href="https://uhf.microsoft.com/statics/20260701.14.10/css/style-BpBYj3rT.css" /><script type="module" src="https://uhf.microsoft.com/statics/20260701.14.10/js/entry.js"></script>
<script src="https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js"></script> <!--/ UHF header -->
<script>
let userConsentDetailsCallback = function () {
return siteConsent ? siteConsent.getConsent() : null
};
(function configureAwaConsent() {
function applyAwaConsentConfig() {
// JSLL is deferred, so awa may not exist yet while parsing <body>.
if (!window.awa || !window.awa.sku || !window.awa.sku.config) {
return false;
}
var awaObj = window.awa;
var spc =
awaObj.sku.config.extensionConfig &&
awaObj.sku.config.extensionConfig.SystemPropertiesCollector;
if (!spc || !spc.callback) {
return false;
}
spc.callback.userConsentDetails = userConsentDetailsCallback;
spc.userConsented = false;
return true;
}
if (!applyAwaConsentConfig()) {
// Deferred scripts execute before DOMContentLoaded, so this will run after JSLL creates `awa`.
document.addEventListener('DOMContentLoaded', applyAwaConsentConfig, { once: true });
}
})();
var is_post = '';
function changeAnalyticsCookies() {
//have Analytics consent
if (siteConsent.getConsentFor(WcpConsent.consentCategories.Analytics)) {
//set consent
var date = new Date();
date.setTime(date.getTime() + (180 * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
if (window.clarity) {
window.clarity('consent');
}
} else if (siteConsent.isConsentRequired === false) {
// Consent is not required
if (window.clarity) {
window.clarity('consent');
}
} else {
document.cookie = name + '=_gat; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
document.cookie = name + '=_gid; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
document.cookie = name + '=_ga; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
document.cookie = name + '=simaCookie; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
}
window.WcpConsent && WcpConsent.init("en-US", "cookie-banner", function (err, _siteConsent) {
if (!err) {
siteConsent = _siteConsent; //siteConsent is used to get the current consent
} else {
//console.log("Error initializing WcpConsent: "+ err);
}
}, onConsentChanged, WcpConsent.themes.light);
function onConsentChanged(categoryPreferences) {
changeAnalyticsCookies();
}
</script>
<main class="devblogs-main" id="main" role="main">
<div class="wrapper">
<div class="container-evo pt-24">
<div class="breadcrumbs-wrapper" data-bi-area="breadcrumb" data-bi-id="breadcrumb">
<nav aria-label="breadcrumb"><ul class="breadcrumb d-flex flex-wrap p-0 m-0" style="list-style-type: none;"><li><a href="https://devblogs.microsoft.com/">Dev Blogs</a><span class="breadcrumb-icon px-6"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" style="vertical-align: middle;"><path fill="none" stroke="currentColor" stroke-width="1" d="m9 5l7 7l-7 7"></path></svg></span></li><li><a href="https://devblogs.microsoft.com/dotnet/">.NET Blog</a><span class="breadcrumb-icon px-6"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" style="vertical-align: middle;"><path fill="none" stroke="currentColor" stroke-width="1" d="m9 5l7 7l-7 7"></path></svg></span></li><li><span class="ebc-current-readmore fw-600" aria-current="page">Category: .NET MAUI</span></li></ul></nav> </div>
<!-- alert-banner-starts -->
<div class="alert-banner pt-16 ">
<div class="email-banner d-flex justify-content-between rounded gap-40 border-r-8 py-8 px-16"
data-bi-area="banner_alert">
<div class="banner-container d-flex flex-column flex-md-row gap-16">
<div class="banner-header d-flex align-items-center fs-14 fw-600">
<span>On Demand</span>
</div>
<div class="banner-body d-flex flex-column gap-16 flex-md-row fs-14">
<p>Missed .NET Day on Agentic Modernization? Watch the coding demos and agentic workflow sessions on demand.</p>
<div class="cta-wrapper d-flex flex-column gap-16 flex-sm-row">
<a class="banner-button d-flex" href="https://aka.ms/dotnetday/playlist"
target="_blank"
aria-label="watch .NET Modernization videos now"
data-bi-id="banner_alert_cta" data-bi-hn="On Demand"
data-bi-name="Watch now">
<div class="d-flex align-items-center fw-600">
<span class="white-space-nowrap">Watch now</span>
</div>
</a>
</div>
</div>
</div>
<div class="banner-cta d-flex gap-16 align-items-center">
<button class="btn-no-styles banner-close d-flex align-items-center" aria-label="Banner close"
data-bi-id="banner_alert_close" data-bi-hn="On Demand" data-bi-name="close">
<svg width="20" height="21" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M4.08859 4.71569L4.14645 4.64645C4.32001 4.47288 4.58944 4.4536 4.78431 4.58859L4.85355 4.64645L10 9.793L15.1464 4.64645C15.32 4.47288 15.5894 4.4536 15.7843 4.58859L15.8536 4.64645C16.0271 4.82001 16.0464 5.08944 15.9114 5.28431L15.8536 5.35355L10.707 10.5L15.8536 15.6464C16.0271 15.82 16.0464 16.0894 15.9114 16.2843L15.8536 16.3536C15.68 16.5271 15.4106 16.5464 15.2157 16.4114L15.1464 16.3536L10 11.207L4.85355 16.3536C4.67999 16.5271 4.41056 16.5464 4.21569 16.4114L4.14645 16.3536C3.97288 16.18 3.9536 15.9106 4.08859 15.7157L4.14645 15.6464L9.293 10.5L4.14645 5.35355C3.97288 5.17999 3.9536 4.91056 4.08859 4.71569L4.14645 4.64645L4.08859 4.71569Z"
fill="currentColor" />
</svg>
</button>
</div>
</div>
</div>
<!-- alert-banner-ends -->
</div>
<div class="container-evo mt-80">
<h1 style="margin-bottom: 68px;">
Showing category results for .NET MAUI </h1>
<div class="container-sidebar-home">
<section class="archive-posts" style="max-width: 1048px">
<div class="archive-content-wrapper" data-bi-area="latest_posts">
<article class="post bg-white box position-relative rounded shadow p-24 mb-40 border-1 post-card" class="post-60572 post type-post status-publish format-standard has-post-thumbnail hentry category-dotnet category-maui category-aspnetcore category-csharp category-entity-framework category-fsharp category-winforms tag-dotnet-11 tag-featured-preview" id="post-60572">
<header class="entry-header">
<div class="d-flex justify-content-between mb-16">
<div class="d-flex align-items-left gap-4">
Aug 11, 2026 </div>
<div class="d-flex gap-16">
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4809 13.8424H15.4C16.2962 13.8424 17 13.1289 17 12.2766V5.56594C17 4.7136 16.2962 4.00012 15.4 4.00012H4.6C3.70383 4.00012 3 4.7136 3 5.56594V12.2766C3 13.1289 3.70383 13.8424 4.6 13.8424H6.19908L6.2 17.0001L6.20346 16.9999L6.20502 16.999L10.4809 13.8424ZM6.79895 17.8035C6.35668 18.1299 5.73 18.0407 5.39921 17.6043C5.26989 17.4336 5.2 17.2263 5.2 17.0134L5.19937 14.8424H4.6C3.16406 14.8424 2 13.6936 2 12.2766V5.56594C2 4.14888 3.16406 3.00012 4.6 3.00012H15.4C16.8359 3.00012 18 4.14888 18 5.56594V12.2766C18 13.6936 16.8359 14.8424 15.4 14.8424H10.81L6.79895 17.8035Z"
fill="#0F6CBD" />
</svg>
<span><span class="screen-reader-text">Post comments count</span>0</span>
</div>
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4965 17.3028L16.7408 10.9994C18.4252 9.28856 18.4199 6.52549 16.7239 4.81249C15.0611 3.13292 12.3961 3.0895 10.6978 4.69086C10.6612 4.72539 10.6251 4.76068 10.5894 4.79673L9.99299 5.40026L9.38843 4.78963C9.35529 4.75616 9.32175 4.72333 9.28783 4.69116C7.58595 3.07726 4.91654 3.10193 3.26122 4.7739C1.5729 6.4792 1.58114 9.25004 3.27679 10.9627L9.55368 17.3028C9.81404 17.5657 10.2362 17.5657 10.4965 17.3028ZM11.3 5.50029C12.5964 4.19135 14.7025 4.19204 16.0133 5.51604C17.3253 6.84123 17.3272 8.97734 16.0292 10.2968L16.0282 10.2978L10.0252 16.3577L3.98743 10.2592C2.67408 8.93263 2.67286 6.78953 3.97185 5.47746C5.26525 4.17106 7.36984 4.17208 8.6778 5.49319L9.63801 6.46306C9.8338 6.66082 10.1534 6.66067 10.349 6.46272L11.3 5.50029Z"
fill="#242424" />
</svg>
<span><span class="screen-reader-text">Post likes count</span>7</span>
</div>
</div>
</div>
<h3 class="fs-24 mb-16"><a class="single-click" href="https://devblogs.microsoft.com/dotnet/dotnet-11-preview-7/" rel="bookmark" data-bi-id="archive_page_latest_posts_card_singleclick" data-bi-name=".NET 11 Preview 7 is now available!">.NET 11 Preview 7 is now available!</a></h3> </header>
<div class="d-flex gap-4 align-items-center">
<div class="d-flex gap-6 align-items-center">
<div class="avatar-parent">
<img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2023/01/dotnet-logo-96x96.png" style="width: 20px; height: 20px;"
class="avatar-20 rounded-pill a" alt="">
</div>
<span class="fs-14">.NET Team</span>
</div> </div>
<div class="mt-16">
<p>
Find out about the new features in .NET 11 Preview 7 across libraries, runtime, SDK, C#, ASP.NET Core, .NET MAUI, Entity Framework Core, F#, and Windows Forms. </p>
</div>
<footer>
<div class="d-flex flex-wrap gap-16 feature-border-top post-topics-list mt-16 pt-16">
<span aria-label=".NET category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET</span><span aria-label="ASP.NET Core category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">ASP.NET Core</span><span aria-label="C# category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">C#</span> </div> </footer>
</article><article class="post bg-white box position-relative rounded shadow p-24 mb-40 border-1 post-card" class="post-60422 post type-post status-publish format-standard has-post-thumbnail hentry category-dotnet category-dotnet-android category-dotnet-ios category-maui tag-net-maui tag-android tag-coreclr tag-ios tag-mono" id="post-60422">
<header class="entry-header">
<div class="d-flex justify-content-between mb-16">
<div class="d-flex align-items-left gap-4">
Jul 14, 2026 </div>
<div class="d-flex gap-16">
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4809 13.8424H15.4C16.2962 13.8424 17 13.1289 17 12.2766V5.56594C17 4.7136 16.2962 4.00012 15.4 4.00012H4.6C3.70383 4.00012 3 4.7136 3 5.56594V12.2766C3 13.1289 3.70383 13.8424 4.6 13.8424H6.19908L6.2 17.0001L6.20346 16.9999L6.20502 16.999L10.4809 13.8424ZM6.79895 17.8035C6.35668 18.1299 5.73 18.0407 5.39921 17.6043C5.26989 17.4336 5.2 17.2263 5.2 17.0134L5.19937 14.8424H4.6C3.16406 14.8424 2 13.6936 2 12.2766V5.56594C2 4.14888 3.16406 3.00012 4.6 3.00012H15.4C16.8359 3.00012 18 4.14888 18 5.56594V12.2766C18 13.6936 16.8359 14.8424 15.4 14.8424H10.81L6.79895 17.8035Z"
fill="#0F6CBD" />
</svg>
<span><span class="screen-reader-text">Post comments count</span>2</span>
</div>
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4965 17.3028L16.7408 10.9994C18.4252 9.28856 18.4199 6.52549 16.7239 4.81249C15.0611 3.13292 12.3961 3.0895 10.6978 4.69086C10.6612 4.72539 10.6251 4.76068 10.5894 4.79673L9.99299 5.40026L9.38843 4.78963C9.35529 4.75616 9.32175 4.72333 9.28783 4.69116C7.58595 3.07726 4.91654 3.10193 3.26122 4.7739C1.5729 6.4792 1.58114 9.25004 3.27679 10.9627L9.55368 17.3028C9.81404 17.5657 10.2362 17.5657 10.4965 17.3028ZM11.3 5.50029C12.5964 4.19135 14.7025 4.19204 16.0133 5.51604C17.3253 6.84123 17.3272 8.97734 16.0292 10.2968L16.0282 10.2978L10.0252 16.3577L3.98743 10.2592C2.67408 8.93263 2.67286 6.78953 3.97185 5.47746C5.26525 4.17106 7.36984 4.17208 8.6778 5.49319L9.63801 6.46306C9.8338 6.66082 10.1534 6.66067 10.349 6.46272L11.3 5.50029Z"
fill="#242424" />
</svg>
<span><span class="screen-reader-text">Post likes count</span>0</span>
</div>
</div>
</div>
<h3 class="fs-24 mb-16"><a class="single-click" href="https://devblogs.microsoft.com/dotnet/coreclr-progress-and-mono-timeline-dotnet-maui/" rel="bookmark" data-bi-id="archive_page_latest_posts_card_singleclick" data-bi-name="CoreCLR Progress and the Mono Timeline for .NET MAUI">CoreCLR Progress and the Mono Timeline for .NET MAUI</a></h3> </header>
<div class="d-flex gap-4 align-items-center">
<div class="d-flex gap-6 align-items-center">
<div class="avatar-parent">
<img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2021/11/davidortinau2024_800-96x96.jpg" style="width: 20px; height: 20px;"
class="avatar-20 rounded-pill a" alt="">
</div>
<span class="fs-14">David Ortinau</span>
</div> </div>
<div class="mt-16">
<p>
CoreCLR is now the only runtime for .NET MAUI mobile apps in .NET 11 Preview 6. Here is where we are, and why we need you to test today. </p>
</div>
<footer>
<div class="d-flex flex-wrap gap-16 feature-border-top post-topics-list mt-16 pt-16">
<span aria-label=".NET category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET</span><span aria-label=".NET MAUI category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET MAUI</span><span aria-label=".NET for iOS category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET for iOS</span> </div> </footer>
</article><article class="post bg-white box position-relative rounded shadow p-24 mb-40 border-1 post-card" class="post-60417 post type-post status-publish format-standard has-post-thumbnail hentry category-dotnet category-maui category-aspnetcore category-csharp category-containers category-entity-framework category-fsharp tag-dotnet-11 tag-featured-preview" id="post-60417">
<header class="entry-header">
<div class="d-flex justify-content-between mb-16">
<div class="d-flex align-items-left gap-4">
Jul 14, 2026 </div>
<div class="d-flex gap-16">
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4809 13.8424H15.4C16.2962 13.8424 17 13.1289 17 12.2766V5.56594C17 4.7136 16.2962 4.00012 15.4 4.00012H4.6C3.70383 4.00012 3 4.7136 3 5.56594V12.2766C3 13.1289 3.70383 13.8424 4.6 13.8424H6.19908L6.2 17.0001L6.20346 16.9999L6.20502 16.999L10.4809 13.8424ZM6.79895 17.8035C6.35668 18.1299 5.73 18.0407 5.39921 17.6043C5.26989 17.4336 5.2 17.2263 5.2 17.0134L5.19937 14.8424H4.6C3.16406 14.8424 2 13.6936 2 12.2766V5.56594C2 4.14888 3.16406 3.00012 4.6 3.00012H15.4C16.8359 3.00012 18 4.14888 18 5.56594V12.2766C18 13.6936 16.8359 14.8424 15.4 14.8424H10.81L6.79895 17.8035Z"
fill="#0F6CBD" />
</svg>
<span><span class="screen-reader-text">Post comments count</span>2</span>
</div>
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4965 17.3028L16.7408 10.9994C18.4252 9.28856 18.4199 6.52549 16.7239 4.81249C15.0611 3.13292 12.3961 3.0895 10.6978 4.69086C10.6612 4.72539 10.6251 4.76068 10.5894 4.79673L9.99299 5.40026L9.38843 4.78963C9.35529 4.75616 9.32175 4.72333 9.28783 4.69116C7.58595 3.07726 4.91654 3.10193 3.26122 4.7739C1.5729 6.4792 1.58114 9.25004 3.27679 10.9627L9.55368 17.3028C9.81404 17.5657 10.2362 17.5657 10.4965 17.3028ZM11.3 5.50029C12.5964 4.19135 14.7025 4.19204 16.0133 5.51604C17.3253 6.84123 17.3272 8.97734 16.0292 10.2968L16.0282 10.2978L10.0252 16.3577L3.98743 10.2592C2.67408 8.93263 2.67286 6.78953 3.97185 5.47746C5.26525 4.17106 7.36984 4.17208 8.6778 5.49319L9.63801 6.46306C9.8338 6.66082 10.1534 6.66067 10.349 6.46272L11.3 5.50029Z"
fill="#242424" />
</svg>
<span><span class="screen-reader-text">Post likes count</span>4</span>
</div>
</div>
</div>
<h3 class="fs-24 mb-16"><a class="single-click" href="https://devblogs.microsoft.com/dotnet/dotnet-11-preview-6/" rel="bookmark" data-bi-id="archive_page_latest_posts_card_singleclick" data-bi-name=".NET 11 Preview 6 is now available!">.NET 11 Preview 6 is now available!</a></h3> </header>
<div class="d-flex gap-4 align-items-center">
<div class="d-flex gap-6 align-items-center">
<div class="avatar-parent">
<img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2023/01/dotnet-logo-96x96.png" style="width: 20px; height: 20px;"
class="avatar-20 rounded-pill a" alt="">
</div>
<span class="fs-14">.NET Team</span>
</div> </div>
<div class="mt-16">
<p>
Find out about the new features in .NET 11 Preview 6 across runtime, SDK, libraries, ASP.NET Core, .NET MAUI, C#, Entity Framework Core, F#, and container images. </p>
</div>
<footer>
<div class="d-flex flex-wrap gap-16 feature-border-top post-topics-list mt-16 pt-16">
<span aria-label=".NET category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET</span><span aria-label="ASP.NET Core category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">ASP.NET Core</span><span aria-label="C# category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">C#</span> </div> </footer>
</article><article class="post bg-white box position-relative rounded shadow p-24 mb-40 border-1 post-card" class="post-60339 post type-post status-publish format-standard has-post-thumbnail hentry category-dotnet category-maui tag-net tag-graphics tag-skiasharp tag-uno-platform" id="post-60339">
<header class="entry-header">
<div class="d-flex justify-content-between mb-16">
<div class="d-flex align-items-left gap-4">
Jun 29, 2026 </div>
<div class="d-flex gap-16">
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4809 13.8424H15.4C16.2962 13.8424 17 13.1289 17 12.2766V5.56594C17 4.7136 16.2962 4.00012 15.4 4.00012H4.6C3.70383 4.00012 3 4.7136 3 5.56594V12.2766C3 13.1289 3.70383 13.8424 4.6 13.8424H6.19908L6.2 17.0001L6.20346 16.9999L6.20502 16.999L10.4809 13.8424ZM6.79895 17.8035C6.35668 18.1299 5.73 18.0407 5.39921 17.6043C5.26989 17.4336 5.2 17.2263 5.2 17.0134L5.19937 14.8424H4.6C3.16406 14.8424 2 13.6936 2 12.2766V5.56594C2 4.14888 3.16406 3.00012 4.6 3.00012H15.4C16.8359 3.00012 18 4.14888 18 5.56594V12.2766C18 13.6936 16.8359 14.8424 15.4 14.8424H10.81L6.79895 17.8035Z"
fill="#0F6CBD" />
</svg>
<span><span class="screen-reader-text">Post comments count</span>10</span>
</div>
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4965 17.3028L16.7408 10.9994C18.4252 9.28856 18.4199 6.52549 16.7239 4.81249C15.0611 3.13292 12.3961 3.0895 10.6978 4.69086C10.6612 4.72539 10.6251 4.76068 10.5894 4.79673L9.99299 5.40026L9.38843 4.78963C9.35529 4.75616 9.32175 4.72333 9.28783 4.69116C7.58595 3.07726 4.91654 3.10193 3.26122 4.7739C1.5729 6.4792 1.58114 9.25004 3.27679 10.9627L9.55368 17.3028C9.81404 17.5657 10.2362 17.5657 10.4965 17.3028ZM11.3 5.50029C12.5964 4.19135 14.7025 4.19204 16.0133 5.51604C17.3253 6.84123 17.3272 8.97734 16.0292 10.2968L16.0282 10.2978L10.0252 16.3577L3.98743 10.2592C2.67408 8.93263 2.67286 6.78953 3.97185 5.47746C5.26525 4.17106 7.36984 4.17208 8.6778 5.49319L9.63801 6.46306C9.8338 6.66082 10.1534 6.66067 10.349 6.46272L11.3 5.50029Z"
fill="#242424" />
</svg>
<span><span class="screen-reader-text">Post likes count</span>3</span>
</div>
</div>
</div>
<h3 class="fs-24 mb-16"><a class="single-click" href="https://devblogs.microsoft.com/dotnet/skiasharp-4-0-stable/" rel="bookmark" data-bi-id="archive_page_latest_posts_card_singleclick" data-bi-name="SkiaSharp 4.0 is here: announcing the first stable release">SkiaSharp 4.0 is here: announcing the first stable release</a></h3> </header>
<div class="d-flex gap-4 align-items-center">
<div class="d-flex gap-6 align-items-center">
<div class="avatar-parent">
<img src="https://secure.gravatar.com/avatar/6e742b593199a0e006efedc41395353a?s=96&r=g" style="width: 20px; height: 20px;"
class="avatar-20 rounded-pill a" alt="">
</div>
<span class="fs-14">Matthew Leibowitz</span>
</div> </div>
<div class="mt-16">
<p>
SkiaSharp 4.148.0 is the first stable release of SkiaSharp v4. Learn what is new, why you should be excited, and join the SkiaSharp live event on June 30. </p>
</div>
<footer>
<div class="d-flex flex-wrap gap-16 feature-border-top post-topics-list mt-16 pt-16">
<span aria-label=".NET category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET</span><span aria-label=".NET MAUI category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET MAUI</span> </div> </footer>
</article><article class="post bg-white box position-relative rounded shadow p-24 mb-40 border-1 post-card" class="post-60230 post type-post status-publish format-standard has-post-thumbnail hentry category-dotnet category-maui category-aspnetcore category-csharp category-entity-framework tag-dotnet-11 tag-featured-preview" id="post-60230">
<header class="entry-header">
<div class="d-flex justify-content-between mb-16">
<div class="d-flex align-items-left gap-4">
Jun 9, 2026 </div>
<div class="d-flex gap-16">
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4809 13.8424H15.4C16.2962 13.8424 17 13.1289 17 12.2766V5.56594C17 4.7136 16.2962 4.00012 15.4 4.00012H4.6C3.70383 4.00012 3 4.7136 3 5.56594V12.2766C3 13.1289 3.70383 13.8424 4.6 13.8424H6.19908L6.2 17.0001L6.20346 16.9999L6.20502 16.999L10.4809 13.8424ZM6.79895 17.8035C6.35668 18.1299 5.73 18.0407 5.39921 17.6043C5.26989 17.4336 5.2 17.2263 5.2 17.0134L5.19937 14.8424H4.6C3.16406 14.8424 2 13.6936 2 12.2766V5.56594C2 4.14888 3.16406 3.00012 4.6 3.00012H15.4C16.8359 3.00012 18 4.14888 18 5.56594V12.2766C18 13.6936 16.8359 14.8424 15.4 14.8424H10.81L6.79895 17.8035Z"
fill="#0F6CBD" />
</svg>
<span><span class="screen-reader-text">Post comments count</span>1</span>
</div>
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4965 17.3028L16.7408 10.9994C18.4252 9.28856 18.4199 6.52549 16.7239 4.81249C15.0611 3.13292 12.3961 3.0895 10.6978 4.69086C10.6612 4.72539 10.6251 4.76068 10.5894 4.79673L9.99299 5.40026L9.38843 4.78963C9.35529 4.75616 9.32175 4.72333 9.28783 4.69116C7.58595 3.07726 4.91654 3.10193 3.26122 4.7739C1.5729 6.4792 1.58114 9.25004 3.27679 10.9627L9.55368 17.3028C9.81404 17.5657 10.2362 17.5657 10.4965 17.3028ZM11.3 5.50029C12.5964 4.19135 14.7025 4.19204 16.0133 5.51604C17.3253 6.84123 17.3272 8.97734 16.0292 10.2968L16.0282 10.2978L10.0252 16.3577L3.98743 10.2592C2.67408 8.93263 2.67286 6.78953 3.97185 5.47746C5.26525 4.17106 7.36984 4.17208 8.6778 5.49319L9.63801 6.46306C9.8338 6.66082 10.1534 6.66067 10.349 6.46272L11.3 5.50029Z"
fill="#242424" />
</svg>
<span><span class="screen-reader-text">Post likes count</span>6</span>
</div>
</div>
</div>
<h3 class="fs-24 mb-16"><a class="single-click" href="https://devblogs.microsoft.com/dotnet/dotnet-11-preview-5/" rel="bookmark" data-bi-id="archive_page_latest_posts_card_singleclick" data-bi-name=".NET 11 Preview 5 is now available!">.NET 11 Preview 5 is now available!</a></h3> </header>
<div class="d-flex gap-4 align-items-center">
<div class="d-flex gap-6 align-items-center">
<div class="avatar-parent">
<img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2023/01/dotnet-logo-96x96.png" style="width: 20px; height: 20px;"
class="avatar-20 rounded-pill a" alt="">
</div>
<span class="fs-14">.NET Team</span>
</div> </div>
<div class="mt-16">
<p>
Find out about the new features in .NET 11 Preview 5 across the .NET runtime, SDK, libraries, ASP.NET Core, .NET MAUI, C#, Entity Framework Core, and more! </p>
</div>
<footer>
<div class="d-flex flex-wrap gap-16 feature-border-top post-topics-list mt-16 pt-16">
<span aria-label=".NET category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET</span><span aria-label="ASP.NET Core category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">ASP.NET Core</span><span aria-label="C# category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">C#</span> </div> </footer>
</article><article class="post bg-white box position-relative rounded shadow p-24 mb-40 border-1 post-card" class="post-60216 post type-post status-publish format-standard has-post-thumbnail hentry category-dotnet category-maui category-ai category-aspnetcore category-csharp tag-dotnet-11 tag-agentic-web tag-ai tag-c tag-microsoft-build tag-microsoft-build-2026" id="post-60216">
<header class="entry-header">
<div class="d-flex justify-content-between mb-16">
<div class="d-flex align-items-left gap-4">
Jun 8, 2026 </div>
<div class="d-flex gap-16">
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4809 13.8424H15.4C16.2962 13.8424 17 13.1289 17 12.2766V5.56594C17 4.7136 16.2962 4.00012 15.4 4.00012H4.6C3.70383 4.00012 3 4.7136 3 5.56594V12.2766C3 13.1289 3.70383 13.8424 4.6 13.8424H6.19908L6.2 17.0001L6.20346 16.9999L6.20502 16.999L10.4809 13.8424ZM6.79895 17.8035C6.35668 18.1299 5.73 18.0407 5.39921 17.6043C5.26989 17.4336 5.2 17.2263 5.2 17.0134L5.19937 14.8424H4.6C3.16406 14.8424 2 13.6936 2 12.2766V5.56594C2 4.14888 3.16406 3.00012 4.6 3.00012H15.4C16.8359 3.00012 18 4.14888 18 5.56594V12.2766C18 13.6936 16.8359 14.8424 15.4 14.8424H10.81L6.79895 17.8035Z"
fill="#0F6CBD" />
</svg>
<span><span class="screen-reader-text">Post comments count</span>3</span>
</div>
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4965 17.3028L16.7408 10.9994C18.4252 9.28856 18.4199 6.52549 16.7239 4.81249C15.0611 3.13292 12.3961 3.0895 10.6978 4.69086C10.6612 4.72539 10.6251 4.76068 10.5894 4.79673L9.99299 5.40026L9.38843 4.78963C9.35529 4.75616 9.32175 4.72333 9.28783 4.69116C7.58595 3.07726 4.91654 3.10193 3.26122 4.7739C1.5729 6.4792 1.58114 9.25004 3.27679 10.9627L9.55368 17.3028C9.81404 17.5657 10.2362 17.5657 10.4965 17.3028ZM11.3 5.50029C12.5964 4.19135 14.7025 4.19204 16.0133 5.51604C17.3253 6.84123 17.3272 8.97734 16.0292 10.2968L16.0282 10.2978L10.0252 16.3577L3.98743 10.2592C2.67408 8.93263 2.67286 6.78953 3.97185 5.47746C5.26525 4.17106 7.36984 4.17208 8.6778 5.49319L9.63801 6.46306C9.8338 6.66082 10.1534 6.66067 10.349 6.46272L11.3 5.50029Z"
fill="#242424" />
</svg>
<span><span class="screen-reader-text">Post likes count</span>5</span>
</div>
</div>
</div>
<h3 class="fs-24 mb-16"><a class="single-click" href="https://devblogs.microsoft.com/dotnet/dotnet-at-microsoft-build-2026/" rel="bookmark" data-bi-id="archive_page_latest_posts_card_singleclick" data-bi-name=".NET at Microsoft Build 2026: Must watch sessions">.NET at Microsoft Build 2026: Must watch sessions</a></h3> </header>
<div class="d-flex gap-4 align-items-center">
<div class="d-flex gap-6 align-items-center">
<div class="avatar-parent">
<img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2022/05/Dan-headshot-dark-96x96.webp" style="width: 20px; height: 20px;"
class="avatar-20 rounded-pill a" alt="">
</div>
<span class="fs-14">Daniel Roth</span>
</div> </div>
<div class="mt-16">
<p>
Catch up on all the .NET sessions from Microsoft Build 2026 covering .NET 11, union types in C#, AI building blocks, the agentic web, .NET MAUI, and more! </p>
</div>
<footer>
<div class="d-flex flex-wrap gap-16 feature-border-top post-topics-list mt-16 pt-16">
<span aria-label=".NET category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET</span><span aria-label="ASP.NET Core category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">ASP.NET Core</span><span aria-label="C# category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">C#</span> </div> </footer>
</article><article class="post bg-white box position-relative rounded shadow p-24 mb-40 border-1 post-card" class="post-60176 post type-post status-publish format-standard has-post-thumbnail hentry category-dotnet category-dotnet-android category-maui tag-net-maui tag-android tag-material-3 tag-material-design tag-material-you tag-ui" id="post-60176">
<header class="entry-header">
<div class="d-flex justify-content-between mb-16">
<div class="d-flex align-items-left gap-4">
May 26, 2026 </div>
<div class="d-flex gap-16">
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4809 13.8424H15.4C16.2962 13.8424 17 13.1289 17 12.2766V5.56594C17 4.7136 16.2962 4.00012 15.4 4.00012H4.6C3.70383 4.00012 3 4.7136 3 5.56594V12.2766C3 13.1289 3.70383 13.8424 4.6 13.8424H6.19908L6.2 17.0001L6.20346 16.9999L6.20502 16.999L10.4809 13.8424ZM6.79895 17.8035C6.35668 18.1299 5.73 18.0407 5.39921 17.6043C5.26989 17.4336 5.2 17.2263 5.2 17.0134L5.19937 14.8424H4.6C3.16406 14.8424 2 13.6936 2 12.2766V5.56594C2 4.14888 3.16406 3.00012 4.6 3.00012H15.4C16.8359 3.00012 18 4.14888 18 5.56594V12.2766C18 13.6936 16.8359 14.8424 15.4 14.8424H10.81L6.79895 17.8035Z"
fill="#0F6CBD" />
</svg>
<span><span class="screen-reader-text">Post comments count</span>0</span>
</div>
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4965 17.3028L16.7408 10.9994C18.4252 9.28856 18.4199 6.52549 16.7239 4.81249C15.0611 3.13292 12.3961 3.0895 10.6978 4.69086C10.6612 4.72539 10.6251 4.76068 10.5894 4.79673L9.99299 5.40026L9.38843 4.78963C9.35529 4.75616 9.32175 4.72333 9.28783 4.69116C7.58595 3.07726 4.91654 3.10193 3.26122 4.7739C1.5729 6.4792 1.58114 9.25004 3.27679 10.9627L9.55368 17.3028C9.81404 17.5657 10.2362 17.5657 10.4965 17.3028ZM11.3 5.50029C12.5964 4.19135 14.7025 4.19204 16.0133 5.51604C17.3253 6.84123 17.3272 8.97734 16.0292 10.2968L16.0282 10.2978L10.0252 16.3577L3.98743 10.2592C2.67408 8.93263 2.67286 6.78953 3.97185 5.47746C5.26525 4.17106 7.36984 4.17208 8.6778 5.49319L9.63801 6.46306C9.8338 6.66082 10.1534 6.66067 10.349 6.46272L11.3 5.50029Z"
fill="#242424" />
</svg>
<span><span class="screen-reader-text">Post likes count</span>2</span>
</div>
</div>
</div>
<h3 class="fs-24 mb-16"><a class="single-click" href="https://devblogs.microsoft.com/dotnet/dotnet-maui-material-3/" rel="bookmark" data-bi-id="archive_page_latest_posts_card_singleclick" data-bi-name="Give Your .NET MAUI Android Apps a Material 3 Makeover">Give Your .NET MAUI Android Apps a Material 3 Makeover</a></h3> </header>
<div class="d-flex gap-4 align-items-center">
<div class="d-flex gap-6 align-items-center">
<div class="avatar-parent">
<img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2022/03/avatar-96x96.png" style="width: 20px; height: 20px;"
class="avatar-20 rounded-pill a" alt="">
</div>
<span class="fs-14">Gerald Versluis</span>
</div> </div>
<div class="mt-16">
<p>
Material 3 (a.k.a. Material You) support is now available for .NET MAUI apps on Android. Here is how to enable it, what changes today, and what is still on the way. </p>
</div>
<footer>
<div class="d-flex flex-wrap gap-16 feature-border-top post-topics-list mt-16 pt-16">
<span aria-label=".NET category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET</span><span aria-label=".NET MAUI category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET MAUI</span><span aria-label=".NET for Android category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET for Android</span> </div> </footer>
</article><article class="post bg-white box position-relative rounded shadow p-24 mb-40 border-1 post-card" class="post-60092 post type-post status-publish format-standard has-post-thumbnail hentry category-dotnet category-maui tag-dotnet-11 tag-net-maui tag-android tag-coreclr tag-ios tag-runtime" id="post-60092">
<header class="entry-header">
<div class="d-flex justify-content-between mb-16">
<div class="d-flex align-items-left gap-4">
May 13, 2026 </div>
<div class="d-flex gap-16">
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4809 13.8424H15.4C16.2962 13.8424 17 13.1289 17 12.2766V5.56594C17 4.7136 16.2962 4.00012 15.4 4.00012H4.6C3.70383 4.00012 3 4.7136 3 5.56594V12.2766C3 13.1289 3.70383 13.8424 4.6 13.8424H6.19908L6.2 17.0001L6.20346 16.9999L6.20502 16.999L10.4809 13.8424ZM6.79895 17.8035C6.35668 18.1299 5.73 18.0407 5.39921 17.6043C5.26989 17.4336 5.2 17.2263 5.2 17.0134L5.19937 14.8424H4.6C3.16406 14.8424 2 13.6936 2 12.2766V5.56594C2 4.14888 3.16406 3.00012 4.6 3.00012H15.4C16.8359 3.00012 18 4.14888 18 5.56594V12.2766C18 13.6936 16.8359 14.8424 15.4 14.8424H10.81L6.79895 17.8035Z"
fill="#0F6CBD" />
</svg>
<span><span class="screen-reader-text">Post comments count</span>4</span>
</div>
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4965 17.3028L16.7408 10.9994C18.4252 9.28856 18.4199 6.52549 16.7239 4.81249C15.0611 3.13292 12.3961 3.0895 10.6978 4.69086C10.6612 4.72539 10.6251 4.76068 10.5894 4.79673L9.99299 5.40026L9.38843 4.78963C9.35529 4.75616 9.32175 4.72333 9.28783 4.69116C7.58595 3.07726 4.91654 3.10193 3.26122 4.7739C1.5729 6.4792 1.58114 9.25004 3.27679 10.9627L9.55368 17.3028C9.81404 17.5657 10.2362 17.5657 10.4965 17.3028ZM11.3 5.50029C12.5964 4.19135 14.7025 4.19204 16.0133 5.51604C17.3253 6.84123 17.3272 8.97734 16.0292 10.2968L16.0282 10.2978L10.0252 16.3577L3.98743 10.2592C2.67408 8.93263 2.67286 6.78953 3.97185 5.47746C5.26525 4.17106 7.36984 4.17208 8.6778 5.49319L9.63801 6.46306C9.8338 6.66082 10.1534 6.66067 10.349 6.46272L11.3 5.50029Z"
fill="#242424" />
</svg>
<span><span class="screen-reader-text">Post likes count</span>9</span>
</div>
</div>
</div>
<h3 class="fs-24 mb-16"><a class="single-click" href="https://devblogs.microsoft.com/dotnet/dotnet-maui-moves-to-coreclr-in-dotnet-11/" rel="bookmark" data-bi-id="archive_page_latest_posts_card_singleclick" data-bi-name=".NET MAUI Moves to CoreCLR in .NET 11">.NET MAUI Moves to CoreCLR in .NET 11</a></h3> </header>
<div class="d-flex gap-4 align-items-center">
<div class="d-flex gap-6 align-items-center">
<div class="avatar-parent">
<img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2021/11/davidortinau2024_800-96x96.jpg" style="width: 20px; height: 20px;"
class="avatar-20 rounded-pill a" alt="">
</div>
<span class="fs-14">David Ortinau</span>
</div> </div>
<div class="mt-16">
<p>
.NET MAUI apps on Android, iOS, and Mac Catalyst now run on CoreCLR by default in .NET 11, unifying the runtime across all of .NET. </p>
</div>
<footer>
<div class="d-flex flex-wrap gap-16 feature-border-top post-topics-list mt-16 pt-16">
<span aria-label=".NET category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET</span><span aria-label=".NET MAUI category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET MAUI</span> </div> </footer>
</article><article class="post bg-white box position-relative rounded shadow p-24 mb-40 border-1 post-card" class="post-60098 post type-post status-publish format-standard has-post-thumbnail hentry category-dotnet category-maui category-aspnetcore category-csharp category-entity-framework tag-dotnet-11 tag-featured-preview" id="post-60098">
<header class="entry-header">
<div class="d-flex justify-content-between mb-16">
<div class="d-flex align-items-left gap-4">
May 12, 2026 </div>
<div class="d-flex gap-16">
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4809 13.8424H15.4C16.2962 13.8424 17 13.1289 17 12.2766V5.56594C17 4.7136 16.2962 4.00012 15.4 4.00012H4.6C3.70383 4.00012 3 4.7136 3 5.56594V12.2766C3 13.1289 3.70383 13.8424 4.6 13.8424H6.19908L6.2 17.0001L6.20346 16.9999L6.20502 16.999L10.4809 13.8424ZM6.79895 17.8035C6.35668 18.1299 5.73 18.0407 5.39921 17.6043C5.26989 17.4336 5.2 17.2263 5.2 17.0134L5.19937 14.8424H4.6C3.16406 14.8424 2 13.6936 2 12.2766V5.56594C2 4.14888 3.16406 3.00012 4.6 3.00012H15.4C16.8359 3.00012 18 4.14888 18 5.56594V12.2766C18 13.6936 16.8359 14.8424 15.4 14.8424H10.81L6.79895 17.8035Z"
fill="#0F6CBD" />
</svg>
<span><span class="screen-reader-text">Post comments count</span>7</span>
</div>
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4965 17.3028L16.7408 10.9994C18.4252 9.28856 18.4199 6.52549 16.7239 4.81249C15.0611 3.13292 12.3961 3.0895 10.6978 4.69086C10.6612 4.72539 10.6251 4.76068 10.5894 4.79673L9.99299 5.40026L9.38843 4.78963C9.35529 4.75616 9.32175 4.72333 9.28783 4.69116C7.58595 3.07726 4.91654 3.10193 3.26122 4.7739C1.5729 6.4792 1.58114 9.25004 3.27679 10.9627L9.55368 17.3028C9.81404 17.5657 10.2362 17.5657 10.4965 17.3028ZM11.3 5.50029C12.5964 4.19135 14.7025 4.19204 16.0133 5.51604C17.3253 6.84123 17.3272 8.97734 16.0292 10.2968L16.0282 10.2978L10.0252 16.3577L3.98743 10.2592C2.67408 8.93263 2.67286 6.78953 3.97185 5.47746C5.26525 4.17106 7.36984 4.17208 8.6778 5.49319L9.63801 6.46306C9.8338 6.66082 10.1534 6.66067 10.349 6.46272L11.3 5.50029Z"
fill="#242424" />
</svg>
<span><span class="screen-reader-text">Post likes count</span>6</span>
</div>
</div>
</div>
<h3 class="fs-24 mb-16"><a class="single-click" href="https://devblogs.microsoft.com/dotnet/dotnet-11-preview-4/" rel="bookmark" data-bi-id="archive_page_latest_posts_card_singleclick" data-bi-name=".NET 11 Preview 4 is now available!">.NET 11 Preview 4 is now available!</a></h3> </header>
<div class="d-flex gap-4 align-items-center">
<div class="d-flex gap-6 align-items-center">
<div class="avatar-parent">
<img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2023/01/dotnet-logo-96x96.png" style="width: 20px; height: 20px;"
class="avatar-20 rounded-pill a" alt="">
</div>
<span class="fs-14">.NET Team</span>
</div> </div>
<div class="mt-16">
<p>
Find out about the new features in .NET 11 Preview 4 across the .NET runtime, SDK, libraries, ASP.NET Core, .NET MAUI, C#, Entity Framework Core, and more! </p>
</div>
<footer>
<div class="d-flex flex-wrap gap-16 feature-border-top post-topics-list mt-16 pt-16">
<span aria-label=".NET category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET</span><span aria-label="ASP.NET Core category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">ASP.NET Core</span><span aria-label="C# category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">C#</span> </div> </footer>
</article><article class="post bg-white box position-relative rounded shadow p-24 mb-40 border-1 post-card" class="post-60010 post type-post status-publish format-standard has-post-thumbnail hentry category-dotnet category-maui tag-net tag-net-maui tag-uno-platform" id="post-60010">
<header class="entry-header">
<div class="d-flex justify-content-between mb-16">
<div class="d-flex align-items-left gap-4">
Apr 28, 2026 </div>
<div class="d-flex gap-16">
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4809 13.8424H15.4C16.2962 13.8424 17 13.1289 17 12.2766V5.56594C17 4.7136 16.2962 4.00012 15.4 4.00012H4.6C3.70383 4.00012 3 4.7136 3 5.56594V12.2766C3 13.1289 3.70383 13.8424 4.6 13.8424H6.19908L6.2 17.0001L6.20346 16.9999L6.20502 16.999L10.4809 13.8424ZM6.79895 17.8035C6.35668 18.1299 5.73 18.0407 5.39921 17.6043C5.26989 17.4336 5.2 17.2263 5.2 17.0134L5.19937 14.8424H4.6C3.16406 14.8424 2 13.6936 2 12.2766V5.56594C2 4.14888 3.16406 3.00012 4.6 3.00012H15.4C16.8359 3.00012 18 4.14888 18 5.56594V12.2766C18 13.6936 16.8359 14.8424 15.4 14.8424H10.81L6.79895 17.8035Z"
fill="#0F6CBD" />
</svg>
<span><span class="screen-reader-text">Post comments count</span>1</span>
</div>
<div class="d-flex align-items-right gap-4">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path class="dark-theme"
d="M10.4965 17.3028L16.7408 10.9994C18.4252 9.28856 18.4199 6.52549 16.7239 4.81249C15.0611 3.13292 12.3961 3.0895 10.6978 4.69086C10.6612 4.72539 10.6251 4.76068 10.5894 4.79673L9.99299 5.40026L9.38843 4.78963C9.35529 4.75616 9.32175 4.72333 9.28783 4.69116C7.58595 3.07726 4.91654 3.10193 3.26122 4.7739C1.5729 6.4792 1.58114 9.25004 3.27679 10.9627L9.55368 17.3028C9.81404 17.5657 10.2362 17.5657 10.4965 17.3028ZM11.3 5.50029C12.5964 4.19135 14.7025 4.19204 16.0133 5.51604C17.3253 6.84123 17.3272 8.97734 16.0292 10.2968L16.0282 10.2978L10.0252 16.3577L3.98743 10.2592C2.67408 8.93263 2.67286 6.78953 3.97185 5.47746C5.26525 4.17106 7.36984 4.17208 8.6778 5.49319L9.63801 6.46306C9.8338 6.66082 10.1534 6.66067 10.349 6.46272L11.3 5.50029Z"
fill="#242424" />
</svg>
<span><span class="screen-reader-text">Post likes count</span>8</span>
</div>
</div>
</div>
<h3 class="fs-24 mb-16"><a class="single-click" href="https://devblogs.microsoft.com/dotnet/welcome-to-skia-sharp-40-preview1/" rel="bookmark" data-bi-id="archive_page_latest_posts_card_singleclick" data-bi-name="Welcome to SkiaSharp 4.0 Preview 1">Welcome to SkiaSharp 4.0 Preview 1</a></h3> </header>
<div class="d-flex gap-4 align-items-center">
<div class="d-flex gap-6 align-items-center">
<div class="avatar-parent">
<img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2021/11/davidortinau2024_800-96x96.jpg" style="width: 20px; height: 20px;"
class="avatar-20 rounded-pill a" alt="">
</div>
<span class="fs-14">David Ortinau</span>
</div> </div>
<div class="mt-16">
<p>
SkiaSharp 4.0 Preview 1 is here. Learn all about the new features and how Uno Platform has stepped up as a co-maintainer. </p>
</div>
<footer>
<div class="d-flex flex-wrap gap-16 feature-border-top post-topics-list mt-16 pt-16">
<span aria-label=".NET category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET</span><span aria-label=".NET MAUI category" class="d-flex align-items-center cat btn-outline-secondary fw-600 px-8 tag-disabled">.NET MAUI</span> </div> </footer>
</article> </div>
<div class="evoposts-paginate fs-16 d-flex justify-content-center border-top pt-12 mb-md-40" data-bi-area="latest_posts" data-bi-id="archive_page_latest_posts_load_more">
<nav class="navigation pagination" aria-label="Posts pagination">
<h2 class="screen-reader-text">Posts pagination</h2>
<div class="nav-links"><span aria-current="page" class="page-numbers current">1</span>
<a class="page-numbers" href="https://devblogs.microsoft.com/dotnet/category/maui/page/2/">2</a>
<span class="page-numbers dots">…</span>
<a class="page-numbers" href="https://devblogs.microsoft.com/dotnet/category/maui/page/14/">14</a>
<a class="next page-numbers" href="https://devblogs.microsoft.com/dotnet/category/maui/page/2/">Load more posts</a></div>
</nav> <div id="loader-overlay" class="evoposts-preloader lp-loader hidden">
<div class="cv-spinner">
<span class="spinner"></span>
</div>
</div>
</div>
</section>
<aside class="mb-24" data-bi-area="sidebar">
<!-- Sidebar CTA -->
<style>
.toggleWrapper:last-child {
border: none;
}
.toggleButton {
cursor: pointer;
border-radius: 4px;
}
</style>
<div class="border-bottom mb-40" data-bi-compnm="banner_sidebar" data-bi-id="archive_page_banner_sidebar" data-bi-hn="Learn C# & .NET"><h2 class="fs-20 mb-8">Learn C# & .NET</h2><p class="mb-16">Free tutorials, videos, courses, and more for beginner through advanced .NET developers.</p><a class="btn-primary d-inline-flex mb-40" href="https://dotnet.microsoft.com/learn">Get Started Today</a></div>
<!-- trending topics -->
<div class="border-bottom mb-40">
<h2 class="fs-20 mb-16">Popular topics</h2>
<div class="d-flex flex-wrap gap-8 post-topics-list mb-40" data-bi-id="archive_page_sidebar_popular_topics">
<a class="d-flex align-items-center btn-outline-secondary fw-600 px-6" href="https://devblogs.microsoft.com/dotnet/category/aspire/">Aspire</a><a class="d-flex align-items-center btn-outline-secondary fw-600 px-6" href="https://devblogs.microsoft.com/dotnet/category/maui/">.NET MAUI</a><a class="d-flex align-items-center btn-outline-secondary fw-600 px-6" href="https://devblogs.microsoft.com/dotnet/category/ai/">AI</a><a class="d-flex align-items-center btn-outline-secondary fw-600 px-6" href="https://devblogs.microsoft.com/dotnet/category/aspnetcore/">ASP.NET Core</a><a class="d-flex align-items-center btn-outline-secondary fw-600 px-6" href="https://devblogs.microsoft.com/dotnet/category/blazor/">Blazor</a><a class="d-flex align-items-center btn-outline-secondary fw-600 px-6" href="https://devblogs.microsoft.com/dotnet/category/csharp/">C#</a><a class="d-flex align-items-center btn-outline-secondary fw-600 px-6" href="https://devblogs.microsoft.com/dotnet/category/developer-stories/">Developer Stories</a><a class="d-flex align-items-center btn-outline-secondary fw-600 px-6" href="https://devblogs.microsoft.com/dotnet/category/nuget/">NuGet</a><a class="d-flex align-items-center btn-outline-secondary fw-600 px-6" href="https://devblogs.microsoft.com/dotnet/category/azure/">Azure</a> </div>
</div>
<!-- Links -->
<div class="mb-40 pb-24 border-bottom">
<!-- First section -->
<div class="border-bottom mb-16 toggleWrapper" data-bi-id="archive_page_sidebar_.net_feature_blogs"><button class="btn-no-styles w-100 d-flex justify-content-between px-8 mb-16 toggleButton" aria-expanded="false" aria-controls="leftContentOther"><h2 class="fs-20">.NET Feature Blogs</h2><div class="toggleIcon d-flex align-items-center"></div></button><div id="leftContentOther" class="toggleContent px-8 pb-12 mb-16 scroll-bar" style="display: none;"><span class="card-text listdisplay cs-content"><ul>
<li><a href="https://devblogs.microsoft.com/dotnet/category/dotnet-aspire/" target="_blank" rel="noopener">.NET Aspire</a></li>
<li><a href="https://devblogs.microsoft.com/dotnet/category/maui/" target="_blank" rel="noopener">.NET MAUI</a></li>
<li><a href="https://devblogs.microsoft.com/dotnet/category/ai/" target="_blank" rel="noopener">AI</a></li>
<li><a href="https://devblogs.microsoft.com/dotnet/category/aspnetcore/" target="_blank" rel="noopener">ASP.NET Core</a></li>
<li><a href="https://devblogs.microsoft.com/aspnet/category/blazor/" target="_blank" rel="noopener">Blazor</a></li>
<li><a href="https://devblogs.microsoft.com/dotnet/category/entity-framework/" target="_blank" rel="noopener">Entity Framework</a></li>
<li><a href="https://devblogs.microsoft.com/dotnet/category/machine-learning/" target="_blank" rel="noopener">Machine Learning</a></li>
<li><a href="https://devblogs.microsoft.com/dotnet/category/nuget/" target="_blank" rel="noopener">NuGet</a></li>
</ul>
<h5>Languages</h5>
<ul>
<li><a href="https://devblogs.microsoft.com/dotnet/category/csharp/" target="_blank" rel="noopener">C#</a></li>
<li><a href="https://devblogs.microsoft.com/dotnet/category/fsharp/" target="_blank" rel="noopener">F#</a></li>
<li><a href="https://devblogs.microsoft.com/vbteam/" target="_blank" rel="noopener">Visual Basic</a></li>
</ul>
<h5>Popular Topics</h5>
<ul>
<li><a href="https://devblogs.microsoft.com/dotnet/category/internals/" target="_blank" rel="noopener">.NET Internals</a></li>
<li><a href="https://devblogs.microsoft.com/dotnet/category/maintenance-and-updates/" target="_blank" rel="noopener">.NET Servicing</a></li>
<li><a href="https://devblogs.microsoft.com/dotnet/category/containers/" target="_blank" rel="noopener">Containers</a></li>
<li><a href="https://devblogs.microsoft.com/dotnet/category/developer-stories/" target="_blank" rel="noopener">Developer Stories</a></li>
<li><a href="https://devblogs.microsoft.com/dotnet/category/performance/" target="_blank" rel="noopener">Performance</a></li>
</ul>
</span></div></div>
<!-- Second section -->
<!-- Third section -->
<div class="border-bottom mb-16 toggleWrapper" data-bi-id="archive_page_sidebar_more_.net"><button class="btn-no-styles w-100 d-flex justify-content-between px-8 mb-16 toggleButton" aria-expanded="false" aria-controls="rightContentOther"><h2 class="fs-20">More .NET</h2><div class="toggleIcon d-flex align-items-center"></div></button><div id="rightContentOther" class="toggleContent px-8 pb-12 scroll-bar" style="display: none;"><span class="card-text listdisplay cs-content"><ul>
<li><a href="https://aka.ms/DotNET_Download" target="blank" rel="noopener">Download .NET</a></li>
<li><a href="https://aka.ms/DotNET_CommunityPage" target="blank" rel="noopener">.NET Community</a></li>
<li><a href="https://aka.ms/DotNET_Docs" target="blank" rel="noopener">.NET Documentation</a></li>
<li><a href="https://aka.ms/DotNET_APIs" target="blank" rel="noopener">.NET API Browser</a></li>
</ul>
<h5>Learn</h5>
<ul>
<li><a href="https://dotnet.microsoft.com/learn" target="blank" rel="noopener">.NET Learning Hub</a></li>
<li><a href="https://dotnet.microsoft.com/learn/dotnet/architecture-guides" target="blank" rel="noopener">Architecture Guidance</a></li>
<li><a href="https://dotnet.microsoft.com/learn/videos" target="blank" rel="noopener">Beginner Videos</a></li>
<li><a href="https://dotnet.microsoft.com/customers" target="blank" rel="noopener">Customer Showcase</a></li>
</ul>
<h5>Follow</h5>
<ul>
<li><a href="https://twitter.com/dotnet" target="_blank" rel="noopener">Twitter</a></li>
<li><a href="https://dotnet.social/@dotnet" target="_blank" rel="me">Mastodon</a></li>
<li><a href="https://youtube.com/@dotnet" target="_blank" rel="noopener">YouTube</a></li>
<li><a href="https://facebook.com/dotnet" target="_blank" rel="noopener">Facebook</a></li>
<li><a href="https://www.linkedin.com/groups/40949/" target="_blank" rel="noopener">LinkedIn</a></li>
<li><a href="https://github.com/dotnet" target="_blank" rel="noopener">GitHub</a></li>
<li><a href="https://bsky.app/profile/dot.net" target="_blank" rel="noopener">Bluesky</a></li>
</ul>
</span></div></div><div class="border-bottom mb-16 toggleWrapper" data-bi-id="archive_page_sidebar_archive"><button class="btn-no-styles w-100 d-flex justify-content-between px-8 mb-16 toggleButton" aria-expanded="false" aria-controls="rightContentArchive"><h2 class="fs-20">Archive</h2><div class="toggleIcon d-flex align-items-center"></div></button><div id="rightContentArchive" class="toggleContent px-8 pb-32 scroll-bar" style="display: none;"><span class="card-text listdisplay"><ul class="ftr-archives" role="list"><li><a href='https://devblogs.microsoft.com/dotnet/2026/08/'>August 2026</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2026/07/'>July 2026</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2026/06/'>June 2026</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2026/05/'>May 2026</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2026/04/'>April 2026</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2026/03/'>March 2026</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2026/02/'>February 2026</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2026/01/'>January 2026</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2025/12/'>December 2025</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2025/11/'>November 2025</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2025/10/'>October 2025</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2025/09/'>September 2025</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2025/08/'>August 2025</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2025/07/'>July 2025</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2025/06/'>June 2025</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2025/05/'>May 2025</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2025/04/'>April 2025</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2025/03/'>March 2025</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2025/02/'>February 2025</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2025/01/'>January 2025</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2024/12/'>December 2024</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2024/11/'>November 2024</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2024/10/'>October 2024</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2024/09/'>September 2024</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2024/08/'>August 2024</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2024/07/'>July 2024</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2024/06/'>June 2024</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2024/05/'>May 2024</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2024/04/'>April 2024</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2024/03/'>March 2024</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2024/02/'>February 2024</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2024/01/'>January 2024</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2023/12/'>December 2023</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2023/11/'>November 2023</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2023/10/'>October 2023</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2023/09/'>September 2023</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2023/08/'>August 2023</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2023/07/'>July 2023</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2023/06/'>June 2023</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2023/05/'>May 2023</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2023/04/'>April 2023</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2023/03/'>March 2023</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2023/02/'>February 2023</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2023/01/'>January 2023</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2022/12/'>December 2022</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2022/11/'>November 2022</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2022/10/'>October 2022</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2022/09/'>September 2022</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2022/08/'>August 2022</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2022/07/'>July 2022</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2022/06/'>June 2022</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2022/05/'>May 2022</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2022/04/'>April 2022</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2022/03/'>March 2022</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2022/02/'>February 2022</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2022/01/'>January 2022</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2021/12/'>December 2021</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2021/11/'>November 2021</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2021/10/'>October 2021</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2021/09/'>September 2021</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2021/08/'>August 2021</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2021/07/'>July 2021</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2021/06/'>June 2021</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2021/05/'>May 2021</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2021/04/'>April 2021</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2021/03/'>March 2021</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2021/02/'>February 2021</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2021/01/'>January 2021</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2020/12/'>December 2020</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2020/11/'>November 2020</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2020/10/'>October 2020</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2020/09/'>September 2020</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2020/08/'>August 2020</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2020/07/'>July 2020</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2020/06/'>June 2020</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2020/05/'>May 2020</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2020/04/'>April 2020</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2020/03/'>March 2020</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2020/02/'>February 2020</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2020/01/'>January 2020</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2019/12/'>December 2019</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2019/11/'>November 2019</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2019/10/'>October 2019</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2019/09/'>September 2019</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2019/08/'>August 2019</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2019/07/'>July 2019</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2019/06/'>June 2019</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2019/05/'>May 2019</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2019/04/'>April 2019</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2019/03/'>March 2019</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2019/02/'>February 2019</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2019/01/'>January 2019</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2018/12/'>December 2018</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2018/11/'>November 2018</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2018/10/'>October 2018</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2018/09/'>September 2018</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2018/08/'>August 2018</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2018/07/'>July 2018</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2018/06/'>June 2018</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2018/05/'>May 2018</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2018/04/'>April 2018</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2018/03/'>March 2018</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2018/02/'>February 2018</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2018/01/'>January 2018</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2017/12/'>December 2017</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2017/11/'>November 2017</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2017/10/'>October 2017</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2017/09/'>September 2017</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2017/08/'>August 2017</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2017/07/'>July 2017</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2017/06/'>June 2017</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2017/05/'>May 2017</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2017/04/'>April 2017</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2017/03/'>March 2017</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2017/02/'>February 2017</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2017/01/'>January 2017</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2016/12/'>December 2016</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2016/11/'>November 2016</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2016/10/'>October 2016</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2016/09/'>September 2016</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2016/08/'>August 2016</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2016/07/'>July 2016</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2016/06/'>June 2016</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2016/05/'>May 2016</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2016/04/'>April 2016</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2016/03/'>March 2016</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2016/02/'>February 2016</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2016/01/'>January 2016</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2015/12/'>December 2015</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2015/11/'>November 2015</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2015/10/'>October 2015</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2015/09/'>September 2015</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2015/08/'>August 2015</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2015/07/'>July 2015</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2015/06/'>June 2015</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2015/05/'>May 2015</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2015/04/'>April 2015</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2015/03/'>March 2015</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2015/02/'>February 2015</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2015/01/'>January 2015</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2014/12/'>December 2014</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2014/11/'>November 2014</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2014/10/'>October 2014</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2014/09/'>September 2014</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2014/08/'>August 2014</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2014/07/'>July 2014</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2014/06/'>June 2014</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2014/05/'>May 2014</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2014/04/'>April 2014</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2014/03/'>March 2014</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2014/02/'>February 2014</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2014/01/'>January 2014</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2013/12/'>December 2013</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2013/11/'>November 2013</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2013/10/'>October 2013</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2013/09/'>September 2013</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2013/08/'>August 2013</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2013/07/'>July 2013</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2013/06/'>June 2013</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2013/05/'>May 2013</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2013/04/'>April 2013</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2013/03/'>March 2013</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2013/02/'>February 2013</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2013/01/'>January 2013</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2012/12/'>December 2012</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2012/11/'>November 2012</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2012/10/'>October 2012</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2012/09/'>September 2012</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2012/08/'>August 2012</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2012/07/'>July 2012</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2012/06/'>June 2012</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2012/05/'>May 2012</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2012/04/'>April 2012</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2012/03/'>March 2012</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2012/02/'>February 2012</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2012/01/'>January 2012</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2011/12/'>December 2011</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2011/11/'>November 2011</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2011/10/'>October 2011</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2011/09/'>September 2011</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2011/08/'>August 2011</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2011/06/'>June 2011</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2011/05/'>May 2011</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2011/04/'>April 2011</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2011/03/'>March 2011</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2011/02/'>February 2011</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2011/01/'>January 2011</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2010/12/'>December 2010</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2010/11/'>November 2010</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2010/10/'>October 2010</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2010/09/'>September 2010</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2010/08/'>August 2010</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2010/07/'>July 2010</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2010/06/'>June 2010</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2010/05/'>May 2010</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2010/04/'>April 2010</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2010/03/'>March 2010</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2010/02/'>February 2010</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2010/01/'>January 2010</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2009/12/'>December 2009</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2009/11/'>November 2009</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2009/10/'>October 2009</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2009/09/'>September 2009</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2009/08/'>August 2009</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2009/07/'>July 2009</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2009/06/'>June 2009</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2009/05/'>May 2009</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2009/04/'>April 2009</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2009/03/'>March 2009</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2009/02/'>February 2009</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2009/01/'>January 2009</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2008/12/'>December 2008</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2008/11/'>November 2008</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2008/10/'>October 2008</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2008/09/'>September 2008</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2008/08/'>August 2008</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2008/07/'>July 2008</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2008/06/'>June 2008</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2008/05/'>May 2008</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2008/04/'>April 2008</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2008/03/'>March 2008</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2008/02/'>February 2008</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2008/01/'>January 2008</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2007/12/'>December 2007</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2007/11/'>November 2007</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2007/10/'>October 2007</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2007/09/'>September 2007</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2007/08/'>August 2007</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2007/07/'>July 2007</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2007/06/'>June 2007</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2007/05/'>May 2007</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2007/04/'>April 2007</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2007/03/'>March 2007</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2007/02/'>February 2007</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2007/01/'>January 2007</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2006/12/'>December 2006</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2006/11/'>November 2006</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2006/10/'>October 2006</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2006/09/'>September 2006</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2006/08/'>August 2006</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2006/07/'>July 2006</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2006/06/'>June 2006</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2006/05/'>May 2006</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2006/04/'>April 2006</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2006/03/'>March 2006</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2006/02/'>February 2006</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2006/01/'>January 2006</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2005/10/'>October 2005</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2005/07/'>July 2005</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2005/05/'>May 2005</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2004/12/'>December 2004</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2004/11/'>November 2004</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2004/09/'>September 2004</a></li><li><a href='https://devblogs.microsoft.com/dotnet/2004/06/'>June 2004</a></li></ul></span></div></div>
<!-- Repeat the above structure for each toggle -->
</div>
<div class="mb-40">
<h2 class="fs-20 mb-16">Follow this blog</h2>
<div class="d-flex flex-wrap gap-20 mb-40" data-bi-hn="Follow this blog">
<a style="width: 24px; height: 24px; position: relative;" title="facebook" data-bi-id="archive_page_sidebar_follow_this_blog" data-bi-name=".NET Blog-facebook" aria-label="Follow Us on Facebook" target="_blank" href="https://aka.ms/dotnet/facebook"><img src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/images/social-icons/facebook.svg" alt="facebook" /></a><a style="width: 24px; height: 24px; position: relative;" title="twitter" data-bi-id="archive_page_sidebar_follow_this_blog" data-bi-name=".NET Blog-twitter" aria-label="Follow Us on Twitter" target="_blank" href="https://aka.ms/dotnet/twitter"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path class="dark-theme" d="M14.4821 10.6218L21.0389 3H19.4852L13.7919 9.61788L9.24467 3H4L10.8763 13.0074L4 21H5.55384L11.5661 14.0113L16.3683 21H21.613L14.4817 10.6218H14.4821ZM12.3539 13.0956L11.6572 12.0991L6.11372 4.16971H8.50033L12.974 10.5689L13.6707 11.5655L19.4859 19.8835H17.0993L12.3539 13.096V13.0956Z"/></svg></a><a style="width: 24px; height: 24px; position: relative;" title="linkedin" data-bi-id="archive_page_sidebar_follow_this_blog" data-bi-name=".NET Blog-linkedin" aria-label="Follow Us on LinkedIn" target="_blank" href="https://aka.ms/dotnet/linkedin"><img src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/images/social-icons/linkedin.svg" alt="linkedin" /></a><a style="width: 24px; height: 24px; position: relative;" title="youtube" data-bi-id="archive_page_sidebar_follow_this_blog" data-bi-name=".NET Blog-youtube" aria-label="Follow Us on YouTube" target="_blank" href="https://aka.ms/dotnet/youtube"><img src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/images/social-icons/youtube.svg" alt="youtube" /></a><a style="width: 24px; height: 24px; position: relative;" title="twitch" data-bi-id="archive_page_sidebar_follow_this_blog" data-bi-name=".NET Blog-twitch" aria-label="Follow Us on Twitch" target="_blank" href="https://aka.ms/VisualStudio_Twitch"><img src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/images/social-icons/twitch.svg" alt="twitch" /></a><a style="width: 24px; height: 24px; position: relative;" title="GitHub" data-bi-id="archive_page_sidebar_follow_this_blog" data-bi-name=".NET Blog-github" aria-label="Follow Us on GitHub" target="_blank" href="https://aka.ms/dotnet/github"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="24" viewBox="0 0 25 24"><g clip-path="url(#clip0_4234_38739)"><path class="dark-theme" fill-rule="evenodd" clip-rule="evenodd" d="M13.2989 0C6.67328 0 0.5 5.37254 0.5 12.0004C0.5 17.3022 3.93804 21.7996 8.70651 23.3864C9.3069 23.4969 9.52569 23.1263 9.52569 22.8081C9.52569 22.5237 9.51538 21.7686 9.50949 20.7675C6.17163 21.4924 5.46737 19.1586 5.46737 19.1586C4.9215 17.7722 4.13473 17.4031 4.13473 17.4031C3.0452 16.6591 4.21724 16.6738 4.21724 16.6738C5.4217 16.7585 6.05523 17.9107 6.05523 17.9107C7.12562 19.7443 8.86416 19.2146 9.54779 18.9074C9.65682 18.1324 9.96696 17.6035 10.3095 17.3037C7.64497 17.0009 4.84341 15.971 4.84341 11.3727C4.84341 10.0629 5.3112 8.99107 6.07881 8.15274C5.95505 7.84923 5.54325 6.62856 6.19668 4.97695C6.19668 4.97695 7.2037 4.65429 9.49623 6.20719C10.4532 5.94051 11.4801 5.80791 12.5004 5.80276C13.5199 5.80791 14.5461 5.94051 15.5045 6.20719C17.7956 4.65429 18.8011 4.97695 18.8011 4.97695C19.456 6.62856 19.0442 7.84923 18.9212 8.15274C19.6903 8.99107 20.1544 10.0629 20.1544 11.3727C20.1544 15.9828 17.3484 16.9972 14.6758 17.2941C15.106 17.6646 15.4898 18.3969 15.4898 19.5166C15.4898 21.1204 15.475 22.4147 15.475 22.8081C15.475 23.1293 15.6916 23.5027 16.3001 23.3856C21.0649 21.7951 24.5 17.3007 24.5 12.0004C24.5 5.37254 19.1267 0 12.4989 0"/></g><defs><clipPath id="clip0_4234_38739"><rect width="24" height="24" fill="white" transform="translate(0.5)"/></clipPath></defs></svg></a><a style="width: 24px; height: 24px; position: relative;" title="Stackoverflow" data-bi-id="archive_page_sidebar_follow_this_blog" data-bi-name=".NET Blog-stackoverflow" aria-label="Follow Us on Stackoverflow" target="_blank" href="https://stackoverflow.com/questions/tagged/.net?sort=frequent"><img src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/images/social-icons/stackoverflow.svg" alt="Stackoverflow" /></a><a style="width: 24px; height: 24px; position: relative;" title="RSS Feed" data-bi-id="archive_page_sidebar_follow_this_blog" data-bi-name=".NET Blog-rss-feed" aria-label="Subscribe to Our RSS Feed" target="_blank" href="https://devblogs.microsoft.com/dotnet/feed/"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="dark-theme-rss">
<path class="dark-theme" d="M6.25 3C4.45507 3 3 4.45507 3 6.25V17.75C3 19.5449 4.45507 21 6.25 21H17.75C19.5449 21 21 19.5449 21 17.75V6.25C21 4.45507 19.5449 3 17.75 3H6.25ZM6.75 7.5C6.34494 7.5 6 7.18276 6 6.7777V6.7233C6 6.33021 6.30507 6.00189 6.69816 6.00012L6.75 6C12.9632 6 18 11.0368 18 17.25L17.9999 17.3018C17.9981 17.6949 17.6698 18 17.2767 18H17.2223C16.8172 18 16.5 17.6551 16.5 17.25C16.5 11.8652 12.1348 7.5 6.75 7.5ZM13.294 18H13.2036C12.805 18 12.5 17.6486 12.5 17.25C12.5 14.0744 9.92564 11.5 6.75 11.5C6.35135 11.5 6 11.195 6 10.7964V10.706C6 10.3267 6.2871 10.0048 6.66639 10.0005C6.69422 10.0002 6.72209 10 6.75 10C10.7541 10 14 13.2459 14 17.25C14 17.2779 13.9998 17.3058 13.9995 17.3336C13.9952 17.7129 13.6733 18 13.294 18ZM7.5 18C6.67157 18 6 17.3284 6 16.5C6 15.6716 6.67157 15 7.5 15C8.32843 15 9 15.6716 9 16.5C9 17.3284 8.32843 18 7.5 18Z" fill="#DA3B01"/>
</svg></a> </div>
<div class="newsletter-form w-100" id="subscribe_form" data-bi-area="sidebar" data-bi-id="archive_page_sidebar_stay_informed">
<h2 id="stayInformed" class="fs-20 fw-600 mb-8">Stay informed</h2>
<div class="fs-14 pb-16">Get notified when new posts are published.</div>
<form method="post" action="https://devblogs.microsoft.com/dotnet?na=s" onsubmit="return newsletter_check(this)">
<input type="hidden" name="nlang" value="">
<div class="d-flex flex-column gap-12 mb-12">
<label for="ne">Email <span>*</span></label>
<div class="d-flex align-items-center justify-content-start flex-md-grow-1 bg-white" style="align-self: stretch; height: 32px; border-radius: 4px; overflow: hidden; border: 1px solid var(--clr-border); width: 90%;"> <input class="x-hidden-focus bg-white" style="flex: 1 1 0; align-self: stretch; border: none; padding: 4px 10px; font-family: Segoe UI; color: var(--clr-body);" type="email" name="ne" placeholder="Enter your email" required="" aria-required="true" autocomplete="email">
</div><div class="tnp-field tnp-field-profile"><label for="np1">Country/Region <span>*</span></label>
<select class="tnp-profile tnp-profile-1 mt-8" id="tnp-profile_1" name="np1" aria-label="Select Country/Region" required aria-required="true"><option value="" selected disabled>Select...</option><option>United States</option><option>Afghanistan</option><option>Åland Islands</option><option>Albania</option><option>Algeria</option><option>American Samoa</option><option>Andorra</option><option>Angola</option><option>Anguilla</option><option>Antarctica</option><option>Antigua and Barbuda</option><option>Argentina</option><option>Armenia</option><option>Aruba</option><option>Australia</option><option>Austria</option><option>Azerbaijan</option><option>Bahamas</option><option>Bahrain</option><option>Bangladesh</option><option>Barbados</option><option>Belarus</option><option>Belgium</option><option>Belize</option><option>Benin</option><option>Bermuda</option><option>Bhutan</option><option>Bolivia</option><option>Bonaire</option><option>Bosnia and Herzegovina</option><option>Botswana</option><option>Bouvet Island</option><option>Brazil</option><option>British Indian Ocean Territory</option><option>British Virgin Islands</option><option>Brunei</option><option>Bulgaria</option><option>Burkina Faso</option><option>Burundi</option><option>Cabo Verde</option><option>Cambodia</option><option>Cameroon</option><option>Canada</option><option>Cayman Islands</option><option>Central African Republic</option><option>Chad</option><option>Chile</option><option>China</option><option>Christmas Island</option><option>Cocos (Keeling) Islands</option><option>Colombia</option><option>Comoros</option><option>Congo</option><option>Congo (DRC)</option><option>Cook Islands</option><option>Costa Rica</option><option>Côte dIvoire</option><option>Croatia</option><option>Curaçao</option><option>Cyprus</option><option>Czechia</option><option>Denmark</option><option>Djibouti</option><option>Dominica</option><option>Dominican Republic</option><option>Ecuador</option><option>Egypt</option><option>El Salvador</option><option>Equatorial Guinea</option><option>Eritrea</option><option>Estonia</option><option>Eswatini</option><option>Ethiopia</option><option>Falkland Islands</option><option>Faroe Islands</option><option>Fiji</option><option>Finland</option><option>France</option><option>French Guiana</option><option>French Polynesia</option><option>French Southern Territories</option><option>Gabon</option><option>Gambia</option><option>Georgia</option><option>Germany</option><option>Ghana</option><option>Gibraltar</option><option>Greece</option><option>Greenland</option><option>Grenada</option><option>Guadeloupe</option><option>Guam</option><option>Guatemala</option><option>Guernsey</option><option>Guinea</option><option>Guinea-Bissau</option><option>Guyana</option><option>Haiti</option><option>Heard Island and McDonald Islands</option><option>Honduras</option><option>Hong Kong SAR</option><option>Hungary</option><option>Iceland</option><option>India</option><option>Indonesia</option><option>Iraq</option><option>Ireland</option><option>Isle of Man</option><option>Israel</option><option>Italy</option><option>Jamaica</option><option>Jan Mayen</option><option>Japan</option><option>Jersey</option><option>Jordan</option><option>Kazakhstan</option><option>Kenya</option><option>Kiribati</option><option>Korea</option><option>Kosovo</option><option>Kuwait</option><option>Kyrgyzstan</option><option>Laos</option><option>Latvia</option><option>Lebanon</option><option>Lesotho</option><option>Liberia</option><option>Libya</option><option>Liechtenstein</option><option>Lithuania</option><option>Luxembourg</option><option>Macau SAR</option><option>Madagascar</option><option>Malawi</option><option>Malaysia</option><option>Maldives</option><option>Mali</option><option>Malta</option><option>Marshall Islands</option><option>Martinique</option><option>Mauritania</option><option>Mauritius</option><option>Mayotte</option><option>Mexico</option><option>Micronesia</option><option>Moldova</option><option>Monaco</option><option>Mongolia</option><option>Montenegro</option><option>Montserrat</option><option>Morocco</option><option>Mozambique</option><option>Myanmar</option><option>Namibia</option><option>Nauru</option><option>Nepal</option><option>Netherlands</option><option>New Caledonia</option><option>New Zealand</option><option>Nicaragua</option><option>Niger</option><option>Nigeria</option><option>Niue</option><option>Norfolk Island</option><option>North Macedonia</option><option>Northern Mariana Islands</option><option>Norway</option><option>Oman</option><option>Pakistan</option><option>Palau</option><option>Palestinian Authority</option><option>Panama</option><option>Papua New Guinea</option><option>Paraguay</option><option>Peru</option><option>Philippines</option><option>Pitcairn Islands</option><option>Poland</option><option>Portugal</option><option>Puerto Rico</option><option>Qatar</option><option>Réunion</option><option>Romania</option><option>Rwanda</option><option>Saba</option><option>Saint Barthélemy</option><option>Saint Kitts and Nevis</option><option>Saint Lucia</option><option>Saint Martin</option><option>Saint Pierre and Miquelon</option><option>Saint Vincent and the Grenadines</option><option>Samoa</option><option>San Marino</option><option>São Tomé and Príncipe</option><option>Saudi Arabia</option><option>Senegal</option><option>Serbia</option><option>Seychelles</option><option>Sierra Leone</option><option>Singapore</option><option>Sint Eustatius</option><option>Sint Maarten</option><option>Slovakia</option><option>Slovenia</option><option>Solomon Islands</option><option>Somalia</option><option>South Africa</option><option>South Georgia and South Sandwich Islands</option><option>South Sudan</option><option>Spain</option><option>Sri Lanka</option><option>St Helena</option><option>Ascension</option><option>Tristan da Cunha</option><option>Suriname</option><option>Svalbard</option><option>Sweden</option><option>Switzerland</option><option>Taiwan</option><option>Tajikistan</option><option>Tanzania</option><option>Thailand</option><option>Timor-Leste</option><option>Togo</option><option>Tokelau</option><option>Tonga</option><option>Trinidad and Tobago</option><option>Tunisia</option><option>Turkey</option><option>Turkmenistan</option><option>Turks and Caicos Islands</option><option>Tuvalu</option><option>U.S. Outlying Islands</option><option>U.S. Virgin Islands</option><option>Uganda</option><option>Ukraine</option><option>United Arab Emirates</option><option>United Kingdom</option><option>Uruguay</option><option>Uzbekistan</option><option>Vanuatu</option><option>Vatican City</option><option>Venezuela</option><option>Vietnam</option><option>Wallis and Futuna</option><option>Yemen</option><option>Zambia</option><option>Zimbabwe</option></select>
</div><div id="privacyField" class="tnp-field tnp-privacy-field">
<label>I would like to receive the .NET Blog Newsletter. <a style="color: var(--clr-body-link); text-decoration: underline;" target="_blank" href="https://go.microsoft.com/fwlink/?LinkId=521839">Privacy Statement.</a></label>
</div>
<div id="consentContainer"></div>
<div class="d-flex">
<button class="tnp-submit btn-primary" type="submit" value="Subscribe">Subscribe</button>
</div>
</div>
</form>
</div></div> </aside>
</div>
</div>
</div><!-- end .wrapper -->
</main><!-- end #main -->
<!-- Add a hidden dark theme button to trigger the toggle function -->
<div style="display:none;">
<div class="login-section c-me d-flex align-items-center">
<a class="login-but d-flex align-items-center" data-bi-area="dev blogs header" data-bi-name="Sign in" href="https://devblogs.microsoft.com/dotnet/wp-login.php?redirect_to=https%3A%2F%2Fdevblogs.microsoft.com%2Fdotnet%2Fcategory%2Fmaui%2F">Sign in</a>
</div>
</div><div id="theme-picker" data-bi-area="dev blogs header" data-bi-id="theme-picker" data-bi-name="Switch to dark theme" class="c-me theme-picker d-flex align-items-center">
<button id="theme-picker-button" style="height: 25px; margin-right: 24px;" class="d-flex btn border-r-12"
aria-pressed="false" aria-label="Dark theme switch">
<span class="theme-text fs-12 d-flex align-items-center"
style="overflow-x: visible;padding: 0px 8px; gap: 8px;"></svg>Theme</span>
</button>
</div><script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/dotnet/*"},{"not":{"href_matches":["/dotnet/wp-*.php","/dotnet/wp-admin/*","/dotnet/wp-content/uploads/sites/10/*","/dotnet/wp-content/*","/dotnet/wp-content/plugins/*","/dotnet/wp-content/themes/devblogs-evo/*","/dotnet/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script>
// Get iframe youtube video length
var iframes = jQuery('iframe[src^="https://www.youtube.com/embed/"], iframe[src^="//www.youtube.com/embed/"], iframe[src^="http://www.youtube.com/embed/"], iframe[src^="www.youtube.com/embed/"], iframe[src^="youtube.com/embed/"], iframe[src^="https://www.youtube.com/"]');
var i, len;
len = iframes.length;
// Country JSON data
function funJSONData(countryData) {
if (countryData.Country == 'CN') {
if (len > 0) {
for (var i = 0; i < len; ++i) {
var el = iframes[i];
el.parentNode.removeChild(el);
}
}
}
}
jQuery(document).ready(function () {
// Remove youtube videos from page
});
</script>
<script id="commentsvote-js-extra">
var votecommentajax = {"ajaxurl":"https://devblogs.microsoft.com/dotnet/wp-admin/admin-ajax.php"};
//# sourceURL=commentsvote-js-extra
</script>
<script id="commentsvote-js" src="https://devblogs.microsoft.com/dotnet/wp-content/plugins/devblogs-comments-evo/admin/js/commentsvote.js?ver=1.1"></script>
<script id="mpp_gutenberg_tabs-js" src="https://devblogs.microsoft.com/dotnet/wp-content/plugins/metronet-profile-picture/js/mpp-frontend.js?ver=2.6.4"></script>
<script id="evo-breadcrumb-script-js" src="https://devblogs.microsoft.com/dotnet/wp-content/plugins/devblogs-evo-breadcrumbs/assets/breadcrumbs.min.js?ver=1.7"></script>
<script id="devblogs-lightbox-js-js" src="https://devblogs.microsoft.com/dotnet/wp-content/plugins/devblogs-lightbox/assets/js/lightbox.min.js?ver=1770924660"></script>
<script id="newsletter-country-sync-js-js-extra">
var NCSData = {"blogName":".NET Blog"};
//# sourceURL=newsletter-country-sync-js-js-extra
</script>
<script id="newsletter-country-sync-js-js" src="https://devblogs.microsoft.com/dotnet/wp-content/plugins/newsletter-country-sync/js/newsletter-country-scripts.min.js?ver=1770158083"></script>
<script id="anchorific-js" src="https://devblogs.microsoft.com/dotnet/wp-content/plugins/shortcode-toc/assets/vendor/js/anchorific.js?ver=1.0.3"></script>
<script id="devblogs-evo-scripts-js-extra">
var devblogs_ajax2 = {"ajaxurl":"https://devblogs.microsoft.com/dotnet/wp-admin/admin-ajax.php"};
var devblogs_ajax_evo = {"ajaxurl":"https://devblogs.microsoft.com/wp-admin/admin-ajax.php"};
var devblogs_site_url = {"site_url":"https://devblogs.microsoft.com/dotnet"};
//# sourceURL=devblogs-evo-scripts-js-extra
</script>
<script id="devblogs-evo-scripts-js" src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/theme.min.js?ver=1.4.0.1763057732"></script>
<script id="custom-theme-js-js" src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/custom-theme.min.js?ver=1776792580"></script>
<script id="alert-banner-js-js" src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/alert-banner.min.js?ver=1737047887"></script>
<script id="loadmore-script-js" src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/loadmore-ajax.js?ver=1785436675"></script>
<script id="theme-picker-script-js" src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/theme-picker.min.js?ver=1784834880"></script>
<script id="dropdown-menu-script-js" src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/dropdown-menu.min.js?ver=1776961454"></script>
<script id="back-to-top-script-js" src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/back-to-top.min.js?ver=1737047887"></script>
<script id="accordion-toggle-js" src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/accordion-toggle.min.js?ver=1784230473"></script>
<script id="gifffer-js-js" src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/gifffer.min.js?ver=1.1"></script>
<script id="custom-jquery-js" src="https://devblogs.microsoft.com/dotnet/wp-content/themes/devblogs-evo/js/jquery-alias.js"></script>
<script id="newsletter-js-extra">
var newsletter_data = {"action_url":"https://devblogs.microsoft.com/dotnet/wp-admin/admin-ajax.php"};
//# sourceURL=newsletter-js-extra
</script>
<script id="newsletter-js" src="https://devblogs.microsoft.com/dotnet/wp-content/plugins/newsletter/main.js?ver=9.3.5"></script>
<script id="wp-emoji-settings" type="application/json">
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://devblogs.microsoft.com/dotnet/wp-includes/js/wp-emoji-release.min.js"}}
</script>
<script type="module">
/*! This file is auto-generated */
var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
//# sourceURL=https://devblogs.microsoft.com/dotnet/wp-includes/js/wp-emoji-loader.min.js
</script>
<script type="text/javascript">(function (undefined) {let scriptOptions={"_localizedStrings":{"redirect_overlay_title":"Hold On","redirect_overlay_text":"You are being redirected to another page,<br>it may take a few seconds.","webview_notification_text":"The selected provider doesn't support embedded browsers!"},"_targetWindow":"prefer-popup","_redirectOverlay":"overlay-with-spinner-and-message","_unsupportedWebviewBehavior":""};
/**
* Used when Cross-Origin-Opener-Policy blocked the access to the opener. We can't have a reference of the opened windows, so we should attempt to refresh only the windows that has opened popups.
*/
window._nslHasOpenedPopup = false;
window._nslWebViewNoticeElement = null;
window.NSLPopup = function (url, title, w, h) {
/**
* Cross-Origin-Opener-Policy blocked the access to the opener
*/
if (typeof BroadcastChannel === "function") {
const _nslLoginBroadCastChannel = new BroadcastChannel('nsl_login_broadcast_channel');
_nslLoginBroadCastChannel.onmessage = (event) => {
if (window?._nslHasOpenedPopup && event.data?.action === 'redirect') {
window._nslHasOpenedPopup = false;
const url = event.data?.href;
_nslLoginBroadCastChannel.close();
if (typeof window.nslRedirect === 'function') {
window.nslRedirect(url);
} else {
window.opener.location = url;
}
}
};
}
const userAgent = navigator.userAgent,
mobile = function () {
return /\b(iPhone|iP[ao]d)/.test(userAgent) ||
/\b(iP[ao]d)/.test(userAgent) ||
/Android/i.test(userAgent) ||
/Mobile/i.test(userAgent);
},
screenX = window.screenX !== undefined ? window.screenX : window.screenLeft,
screenY = window.screenY !== undefined ? window.screenY : window.screenTop,
outerWidth = window.outerWidth !== undefined ? window.outerWidth : document.documentElement.clientWidth,
outerHeight = window.outerHeight !== undefined ? window.outerHeight : document.documentElement.clientHeight - 22,
targetWidth = mobile() ? null : w,
targetHeight = mobile() ? null : h,
left = parseInt(screenX + (outerWidth - targetWidth) / 2, 10),
right = parseInt(screenY + (outerHeight - targetHeight) / 2.5, 10),
features = [];
if (targetWidth !== null) {
features.push('width=' + targetWidth);
}
if (targetHeight !== null) {
features.push('height=' + targetHeight);
}
features.push('left=' + left);
features.push('top=' + right);
features.push('scrollbars=1');
const newWindow = window.open(url, title, features.join(','));
if (window.focus) {
newWindow.focus();
}
window._nslHasOpenedPopup = true;
return newWindow;
};
let isWebView = null;
function checkWebView() {
if (isWebView === null) {
function _detectOS(ua) {
if (/Android/.test(ua)) {
return "Android";
} else if (/iPhone|iPad|iPod/.test(ua)) {
return "iOS";
} else if (/Windows/.test(ua)) {
return "Windows";
} else if (/Mac OS X/.test(ua)) {
return "Mac";
} else if (/CrOS/.test(ua)) {
return "Chrome OS";
} else if (/Firefox/.test(ua)) {
return "Firefox OS";
}
return "";
}
function _detectBrowser(ua) {
let android = /Android/.test(ua);
if (/Opera Mini/.test(ua) || / OPR/.test(ua) || / OPT/.test(ua)) {
return "Opera";
} else if (/CriOS/.test(ua)) {
return "Chrome for iOS";
} else if (/Edge/.test(ua)) {
return "Edge";
} else if (android && /Silk\//.test(ua)) {
return "Silk";
} else if (/Chrome/.test(ua)) {
return "Chrome";
} else if (/Firefox/.test(ua)) {
return "Firefox";
} else if (android) {
return "AOSP";
} else if (/MSIE|Trident/.test(ua)) {
return "IE";
} else if (/Safari\//.test(ua)) {
return "Safari";
} else if (/AppleWebKit/.test(ua)) {
return "WebKit";
}
return "";
}
function _detectBrowserVersion(ua, browser) {
if (browser === "Opera") {
return /Opera Mini/.test(ua) ? _getVersion(ua, "Opera Mini/") :
/ OPR/.test(ua) ? _getVersion(ua, " OPR/") :
_getVersion(ua, " OPT/");
} else if (browser === "Chrome for iOS") {
return _getVersion(ua, "CriOS/");
} else if (browser === "Edge") {
return _getVersion(ua, "Edge/");
} else if (browser === "Chrome") {
return _getVersion(ua, "Chrome/");
} else if (browser === "Firefox") {
return _getVersion(ua, "Firefox/");
} else if (browser === "Silk") {
return _getVersion(ua, "Silk/");
} else if (browser === "AOSP") {
return _getVersion(ua, "Version/");
} else if (browser === "IE") {
return /IEMobile/.test(ua) ? _getVersion(ua, "IEMobile/") :
/MSIE/.test(ua) ? _getVersion(ua, "MSIE ")
:
_getVersion(ua, "rv:");
} else if (browser === "Safari") {
return _getVersion(ua, "Version/");
} else if (browser === "WebKit") {
return _getVersion(ua, "WebKit/");
}
return "0.0.0";
}
function _getVersion(ua, token) {
try {
return _normalizeSemverString(ua.split(token)[1].trim().split(/[^\w\.]/)[0]);
} catch (o_O) {
}
return "0.0.0";
}
function _normalizeSemverString(version) {
const ary = version.split(/[\._]/);
return (parseInt(ary[0], 10) || 0) + "." +
(parseInt(ary[1], 10) || 0) + "." +
(parseInt(ary[2], 10) || 0);
}
function _isWebView(ua, os, browser, version, options) {
switch (os + browser) {
case "iOSSafari":
return false;
case "iOSWebKit":
return _isWebView_iOS(options);
case "AndroidAOSP":
return false;
case "AndroidChrome":
return parseFloat(version) >= 42 ? /; wv/.test(ua) : /\d{2}\.0\.0/.test(version) ? true : _isWebView_Android(options);
}
return false;
}
function _isWebView_iOS(options) {
const document = (window["document"] || {});
if ("WEB_VIEW" in options) {
return options["WEB_VIEW"];
}
return !("fullscreenEnabled" in document || "webkitFullscreenEnabled" in document || false);
}
function _isWebView_Android(options) {
if ("WEB_VIEW" in options) {
return options["WEB_VIEW"];
}
return !("requestFileSystem" in window || "webkitRequestFileSystem" in window || false);
}
const options = {},
nav = window.navigator || {},
ua = nav.userAgent || "",
os = _detectOS(ua),
browser = _detectBrowser(ua),
browserVersion = _detectBrowserVersion(ua, browser);
isWebView = _isWebView(ua, os, browser, browserVersion, options);
}
return isWebView;
}
function isAllowedWebViewForUserAgent(provider) {
const facebookAllowedWebViews = [
'Instagram',
'FBAV',
'FBAN'
];
let whitelist = [];
if (provider && provider === 'facebook') {
whitelist = facebookAllowedWebViews;
}
const nav = window.navigator || {},
ua = nav.userAgent || "";
if (whitelist.length && ua.match(new RegExp(whitelist.join('|')))) {
return true;
}
return false;
}
function disableButtonInWebView(providerButtonElement) {
if (providerButtonElement) {
providerButtonElement.classList.add('nsl-disabled-provider');
providerButtonElement.setAttribute('href', '#');
providerButtonElement.addEventListener('pointerdown', (e) => {
if (!window._nslWebViewNoticeElement) {
window._nslWebViewNoticeElement = document.createElement('div');
window._nslWebViewNoticeElement.id = "nsl-notices-fallback";
window._nslWebViewNoticeElement.addEventListener('pointerdown', function (e) {
this.parentNode.removeChild(this);
window._nslWebViewNoticeElement = null;
});
const webviewNoticeHTML = '<div class="error"><p>' + scriptOptions._localizedStrings.webview_notification_text + '</p></div>';
window._nslWebViewNoticeElement.insertAdjacentHTML("afterbegin", webviewNoticeHTML);
document.body.appendChild(window._nslWebViewNoticeElement);
}
});
}
}
window._nslDOMReady(function () {
window.nslRedirect = function (url) {
if (scriptOptions._redirectOverlay) {
const overlay = document.createElement('div');
overlay.id = "nsl-redirect-overlay";
let overlayHTML = '';
const overlayContainer = "<div id='nsl-redirect-overlay-container'>",
overlayContainerClose = "</div>",
overlaySpinner = "<div id='nsl-redirect-overlay-spinner'></div>",
overlayTitle = "<p id='nsl-redirect-overlay-title'>" + scriptOptions._localizedStrings.redirect_overlay_title + "</p>",
overlayText = "<p id='nsl-redirect-overlay-text'>" + scriptOptions._localizedStrings.redirect_overlay_text + "</p>";
switch (scriptOptions._redirectOverlay) {
case "overlay-only":
break;
case "overlay-with-spinner":
overlayHTML = overlayContainer + overlaySpinner + overlayContainerClose;
break;
default:
overlayHTML = overlayContainer + overlaySpinner + overlayTitle + overlayText + overlayContainerClose;
break;
}
overlay.insertAdjacentHTML("afterbegin", overlayHTML);
document.body.appendChild(overlay);
}
window.location = url;
};
let targetWindow = scriptOptions._targetWindow || 'prefer-popup',
lastPopup = false;
document.addEventListener('click', function (e) {
if (e.target) {
const buttonLinkElement = e.target.closest('a[data-plugin="nsl"][data-action="connect"]') || e.target.closest('a[data-plugin="nsl"][data-action="link"]');
if (buttonLinkElement) {
if (lastPopup && !lastPopup.closed) {
e.preventDefault();
lastPopup.focus();
} else {
let href = buttonLinkElement.href,
success = false;
if (href.indexOf('?') !== -1) {
href += '&';
} else {
href += '?';
}
const redirectTo = buttonLinkElement.dataset.redirect;
if (redirectTo === 'current') {
href += 'redirect=' + encodeURIComponent(window.location.href) + '&';
} else if (redirectTo && redirectTo !== '') {
href += 'redirect=' + encodeURIComponent(redirectTo) + '&';
}
if (targetWindow !== 'prefer-same-window' && checkWebView()) {
targetWindow = 'prefer-same-window';
}
if (targetWindow === 'prefer-popup') {
lastPopup = NSLPopup(href + 'display=popup', 'nsl-social-connect', buttonLinkElement.dataset.popupwidth, buttonLinkElement.dataset.popupheight);
if (lastPopup) {
success = true;
e.preventDefault();
}
} else if (targetWindow === 'prefer-new-tab') {
const newTab = window.open(href + 'display=popup', '_blank');
if (newTab) {
if (window.focus) {
newTab.focus();
}
success = true;
window._nslHasOpenedPopup = true;
e.preventDefault();
}
}
if (!success) {
window.location = href;
e.preventDefault();
}
}
}
}
});
let buttonCountChanged = false;
const googleLoginButtons = document.querySelectorAll(' a[data-plugin="nsl"][data-provider="google"]');
if (googleLoginButtons.length && checkWebView()) {
googleLoginButtons.forEach(function (googleLoginButton) {
if (scriptOptions._unsupportedWebviewBehavior === 'disable-button') {
disableButtonInWebView(googleLoginButton);
} else {
googleLoginButton.remove();
buttonCountChanged = true;
}
});
}
const facebookLoginButtons = document.querySelectorAll(' a[data-plugin="nsl"][data-provider="facebook"]');
if (facebookLoginButtons.length && checkWebView() && /Android/.test(window.navigator.userAgent) && !isAllowedWebViewForUserAgent('facebook')) {
facebookLoginButtons.forEach(function (facebookLoginButton) {
if (scriptOptions._unsupportedWebviewBehavior === 'disable-button') {
disableButtonInWebView(facebookLoginButton);
} else {
facebookLoginButton.remove();
buttonCountChanged = true;
}
});
}
const separators = document.querySelectorAll('div.nsl-separator');
if (buttonCountChanged && separators.length) {
separators.forEach(function (separator) {
const separatorParentNode = separator.parentNode;
if (separatorParentNode) {
const separatorButtonContainer = separatorParentNode.querySelector('div.nsl-container-buttons');
if (separatorButtonContainer && !separatorButtonContainer.hasChildNodes()) {
separator.remove();
}
}
})
}
});})();</script><!-- start Simple Custom CSS and JS -->
<style type="text/css">
.comment-content pre{
background-color: var(--clr-body-bg);
padding:16px;
margin-top:0px;
}</style>
<!-- end Simple Custom CSS and JS -->
<!-- Model form for code insert -->
<div class="modal fade" id="codeModal" tabindex="-1" role="dialog" aria-labelledby="codeModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="codeModalLabel">Code Block</h5>
<button type="button" class="close" onclick="myCodeCancelFunction()" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<form id="myForm" action="#">
<div class="modal-body">
<div class="form-group">
<label for="code-text">Paste your code snippet</label>
<textarea class="form-control" id="code-text" style="height: 150px;"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" onclick="myCodeFunction()" class="btn btn-primary">Ok</button>
<button type="button" name="Cancel" onclick="myCodeCancelFunction()" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
</div>
</form>
</div>
</div>
</div>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function () {
const skip = document.getElementById("uhfSkipToMain");
const mainContent = document.getElementById("main");
const announcer = document.getElementById("sr-announcer");
if (!skip || !mainContent) return;
skip.setAttribute("href", "#main");
skip.addEventListener("click", function (e) {
e.preventDefault();
mainContent.setAttribute("tabindex", "-1");
mainContent.focus();
mainContent.scrollIntoView({ behavior: "smooth" });
if (announcer) {
announcer.textContent = "Main content starts here";
}
});
});
</script>
<!-- UHF footer -->
<uhf-footer locale="en-us" partnerId="DEV_Blogs" footerId="DEV_BlogsFooter" theme="light">
<script id="uhf-footer-ccpa">
(function () {
function checkThirdPartyAdsOptOutCookie() {
try {
var match = document.cookie.match('(^|;)\\s*3PAdsOptOut\\s*=\\s*([^;]+)');
return (match ? match[2] : '') !== '1';
} catch (e) {
return true;
}
}
var globalPrivacyControlEnabled = navigator.globalPrivacyControl;
window.GPC_DataSharingOptIn = globalPrivacyControlEnabled ? false : checkThirdPartyAdsOptOutCookie();
if (typeof window.onGPCLoaded === 'function') {
window.onGPCLoaded();
}
})();
</script>
<uhf-footer-nav slot="uhf-footer-nav">
<div class="uhf-footer-nav-row">
<uhf-footer-nav-group class="uhf-footer-nav-group" heading="What's new" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_What's new_nav", "ecn": "FooterNav_Whats_New_nav", "ehn": "FooterNav"}">
<a class="uhf-footer-link" href="https://www.microsoft.com/surface/devices/surface-pro" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_What's new_Surface Pro_nav", "ecn": "FooterNav_Whats_New_Footer_WhatsNew_NewSurfacePro_nav", "ehn": "FooterNav"}">Surface Pro</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/surface/devices/surface-laptop" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_What's new_Surface Laptop_nav", "ecn": "FooterNav_Whats_New_Footer_WhatsNew_SurfaceLaptop_nav", "ehn": "FooterNav"}">Surface Laptop</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/surface/devices/surface-laptop-ultra?icid=DSM_Footer_WhatsNew_SurfaceLaptopUltra" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_What's new_Surface Laptop Ultra_nav", "ecn": "FooterNav_Whats_New_Footer_WhatsNew_Surface Laptop Ultra_nav", "ehn": "FooterNav"}">Surface Laptop Ultra</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/surface/devices/surface-rtx-spark-dev-box?icid=DSM_Footer_WhatsNew_SurfaceRTXSparkDevBox" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_What's new_Surface RTX Spark Dev Box_nav", "ecn": "FooterNav_Whats_New_footer_whatsnew_SurfaceRTXSparksDevBox_nav_nav", "ehn": "FooterNav"}">Surface RTX Spark Dev Box</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/microsoft-copilot/organizations?icid=DSM_Footer_CopilotOrganizations" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_What's new_Copilot for organizations_nav", "ecn": "FooterNav_Whats_New_Footer_WhatsNew_CopilotMicrosoft_nav", "ehn": "FooterNav"}">Copilot for organizations</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/microsoft-copilot/for-individuals?form=MY02PT&OCID=GE_web_Copilot_Free_868g3t5nj" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_What's new_Copilot for personal use_nav", "ecn": "FooterNav_Whats_New_Footer_WhatsNew_CopilotPersonal_nav", "ehn": "FooterNav"}">Copilot for personal use</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/microsoft-products-and-apps" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_What's new_Explore Microsoft products_nav", "ecn": "FooterNav_Whats_New_Footer_WhatsNew_ExploreMicrosoftProducts_nav", "ehn": "FooterNav"}">Explore Microsoft products</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/windows/apps-for-windows?icid=DSM_Footer_WhatsNew_Windows11apps" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_What's new_Windows 11 apps_nav", "ecn": "FooterNav_Whats_New_Footer_WhatsNew_Windows_11_apps_nav", "ehn": "FooterNav"}">Windows 11 apps</a>
</uhf-footer-nav-group>
<uhf-footer-nav-group class="uhf-footer-nav-group" heading="Microsoft Store" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Microsoft Store_nav", "ecn": "FooterNav_Store_and_Support_nav", "ehn": "FooterNav"}">
<a class="uhf-footer-link" href="https://account.microsoft.com/" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Microsoft Store_Account profile_nav", "ecn": "FooterNav_Store_and_Support_Footer_StoreandSupport_AccountProfile_nav", "ehn": "FooterNav"}">Account profile</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/download" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Microsoft Store_Download Center_nav", "ecn": "FooterNav_Store_and_Support_Footer_StoreandSupport_DownloadCenter_nav", "ehn": "FooterNav"}">Download Center</a>
<a class="uhf-footer-link" href="https://go.microsoft.com/fwlink/?linkid=2139749" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Microsoft Store_Microsoft Store support_nav", "ecn": "FooterNav_Store_and_Support_Footer_StoreandSupport_SalesAndSupport_nav", "ehn": "FooterNav"}">Microsoft Store support</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/store/b/returns" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Microsoft Store_Returns_nav", "ecn": "FooterNav_Store_and_Support_Footer_StoreandSupport_Returns_nav", "ehn": "FooterNav"}">Returns</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/store/b/order-tracking" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Microsoft Store_Order tracking_nav", "ecn": "FooterNav_Store_and_Support_Footer_StoreandSupport_OrderTracking_nav", "ehn": "FooterNav"}">Order tracking</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/store/b/certified-refurbished-products" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Microsoft Store_Certified Refurbished_nav", "ecn": "FooterNav_Store_and_Support_Footer_StoreandSupport_StoreLocations_nav", "ehn": "FooterNav"}">Certified Refurbished</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/store/b/why-microsoft-store?icid=footer_why-msft-store_7102020" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Microsoft Store_Microsoft Store Promise_nav", "ecn": "FooterNav_Store_and_Support_Footer_StoreandSupport_MicrosoftPromise_nav", "ehn": "FooterNav"}">Microsoft Store Promise</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/store/b/payment-financing-options?icid=footer_financing_vcc" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Microsoft Store_Flexible Payments_nav", "ecn": "FooterNav_Store_and_Support_Footer_StoreandSupport_Financing_nav", "ehn": "FooterNav"}">Flexible Payments</a>
</uhf-footer-nav-group>
<uhf-footer-nav-group class="uhf-footer-nav-group" heading="Education" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Education_nav", "ecn": "FooterNav_Education_nav", "ehn": "FooterNav"}">
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/education" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Education_Microsoft in education_nav", "ecn": "FooterNav_Education_Footer_Education_MicrosoftInEducation_nav", "ehn": "FooterNav"}">Microsoft in education</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/education/devices/overview" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Education_Devices for education_nav", "ecn": "FooterNav_Education_Footer_Education_DevicesforEducation_nav", "ehn": "FooterNav"}">Devices for education</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/education/products/teams" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Education_Microsoft Teams for Education_nav", "ecn": "FooterNav_Education_Footer_Education_MicrosoftTeamsforEducation_nav", "ehn": "FooterNav"}">Microsoft Teams for Education</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/education/products/microsoft-365" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Education_Microsoft 365 Education_nav", "ecn": "FooterNav_Education_Footer_Education_Microsoft365Education_nav", "ehn": "FooterNav"}">Microsoft 365 Education</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/education/how-to-buy" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Education_How to buy for your school_nav", "ecn": "FooterNav_Education_Footer_Howtobuyforyourschool_nav", "ehn": "FooterNav"}">How to buy for your school</a>
<a class="uhf-footer-link" href="https://education.microsoft.com/" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Education_Educator training and development_nav", "ecn": "FooterNav_Education_Footer_Education_EducatorTrainingDevelopment_nav", "ehn": "FooterNav"}">Educator training and development</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/store/b/education" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Education_Deals for students and parents_nav", "ecn": "FooterNav_Education_Footer_Education_DealsForStudentsandParents_nav", "ehn": "FooterNav"}">Deals for students and parents</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/education/ai-in-education" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Education_AI for education_nav", "ecn": "FooterNav_Education_Footer_Education_Azureforstudents_nav", "ehn": "FooterNav"}">AI for education</a>
</uhf-footer-nav-group>
</div>
<div class="uhf-footer-nav-row">
<uhf-footer-nav-group class="uhf-footer-nav-group" heading="Business" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Business_nav", "ecn": "FooterNav_Business_nav", "ehn": "FooterNav"}">
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/ai?icid=DSM_Footer_AI" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Business_Microsoft AI_nav", "ecn": "FooterNav_Business_Footer_Business_AI_nav", "ehn": "FooterNav"}">Microsoft AI</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/security" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Business_Microsoft Security_nav", "ecn": "FooterNav_Business_Footer_Business_Microsoft Security_nav", "ehn": "FooterNav"}">Microsoft Security</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/dynamics-365" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Business_Dynamics 365_nav", "ecn": "FooterNav_Business_Footer_Business_MicrosoftDynamics365_nav", "ehn": "FooterNav"}">Dynamics 365</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/microsoft-365/business" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Business_Microsoft 365_nav", "ecn": "FooterNav_Business_Footer_Business_M365_nav", "ehn": "FooterNav"}">Microsoft 365</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/power-platform" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Business_Microsoft Power Platform_nav", "ecn": "FooterNav_Business_Footer_DeveloperAndIT_Power Platform_nav", "ehn": "FooterNav"}">Microsoft Power Platform</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/microsoft-teams/group-chat-software" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Business_Microsoft Teams_nav", "ecn": "FooterNav_Business_Footer_Business_Microsoft365_nav", "ehn": "FooterNav"}">Microsoft Teams</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/microsoft-365-copilot?icid=DSM_Footer_Microsoft365Copilot" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Business_Microsoft 365 Copilot_nav", "ecn": "FooterNav_Business_Footer_CopilotMicrosoft365 _nav", "ehn": "FooterNav"}">Microsoft 365 Copilot</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/store/b/business?icid=CNavBusinessStore" id="Small-Business" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Business_Small Business_nav", "ecn": "FooterNav_Business_Footer_Business-SmallBusiness_nav", "ehn": "FooterNav"}">Small Business</a>
</uhf-footer-nav-group>
<uhf-footer-nav-group class="uhf-footer-nav-group" heading="Developer & IT" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Developer & IT_nav", "ecn": "FooterNav_Developer_nav", "ehn": "FooterNav"}">
<a class="uhf-footer-link" href="https://azure.microsoft.com/en-us/" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Developer & IT_Azure_nav", "ecn": "FooterNav_Developer_Footer_DeveloperAndIT_MicrosoftAzure_nav", "ehn": "FooterNav"}">Azure</a>
<a class="uhf-footer-link" href="https://developer.microsoft.com/en-us/" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Developer & IT_Microsoft Developer_nav", "ecn": "FooterNav_Developer_Footer_DeveloperAndIT_MicrosoftDeveloper_nav", "ehn": "FooterNav"}">Microsoft Developer</a>
<a class="uhf-footer-link" href="https://learn.microsoft.com/" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Developer & IT_Microsoft Learn_nav", "ecn": "FooterNav_Developer_Footer_DeveloperAndIT_MicrosoftLearn_nav", "ehn": "FooterNav"}">Microsoft Learn</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/software-development-companies/offers-benefits/isv-success?icid=DSM_Footer_SupportAIMarketplace&ocid=cmm3atxvn98" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Developer & IT_Support for AI marketplace apps_nav", "ecn": "FooterNav_Developer_Footer_DeveloperAndIT_SupportForAIMarketplaceApps_nav", "ehn": "FooterNav"}">Support for AI marketplace apps</a>
<a class="uhf-footer-link" href="https://techcommunity.microsoft.com/" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Developer & IT_Microsoft Tech Community_nav", "ecn": "FooterNav_Developer_Footer_DeveloperAndIT_MicrosoftTechCommunity_nav", "ehn": "FooterNav"}">Microsoft Tech Community</a>
<a class="uhf-footer-link" href="https://marketplace.microsoft.com?icid=DSM_Footer_Marketplace&ocid=cmm3atxvn98" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Developer & IT_Microsoft Marketplace_nav", "ecn": "FooterNav_Developer_Footer_DeveloperAndIT_Marketplace_nav", "ehn": "FooterNav"}">Microsoft Marketplace</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/software-development-companies?icid=DSM_Footer_SoftwareCompanies&ocid=cmm3atxvn98" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Developer & IT_Software companies_nav", "ecn": "FooterNav_Developer_Software companies_nav", "ehn": "FooterNav"}">Software companies</a>
<a class="uhf-footer-link" href="https://visualstudio.microsoft.com/" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Developer & IT_Visual Studio_nav", "ecn": "FooterNav_Developer_Footer_DeveloperAndIT_MicrosoftVisualStudio_nav", "ehn": "FooterNav"}">Visual Studio</a>
</uhf-footer-nav-group>
<uhf-footer-nav-group class="uhf-footer-nav-group" heading="Company" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Company_nav", "ecn": "FooterNav_Company_nav", "ehn": "FooterNav"}">
<a class="uhf-footer-link" href="https://careers.microsoft.com/" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Company_Careers_nav", "ecn": "FooterNav_Company_Footer_Company_Careers_nav", "ehn": "FooterNav"}">Careers</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/about" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Company_About Microsoft_nav", "ecn": "FooterNav_Company_Footer_Company_AboutMicrosoft_nav", "ehn": "FooterNav"}">About Microsoft</a>
<a class="uhf-footer-link" href="https://news.microsoft.com/source/?icid=DSM_Footer_Company_CompanyNews" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Company_Company news_nav", "ecn": "FooterNav_Company_Footer_Company_CompanyNews_nav", "ehn": "FooterNav"}">Company news</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/privacy?icid=DSM_Footer_Company_Privacy" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Company_Privacy at Microsoft_nav", "ecn": "FooterNav_Company_Footer_Company_PrivacyAtMicrosoft_nav", "ehn": "FooterNav"}">Privacy at Microsoft</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/investor/default.aspx" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Company_Investors_nav", "ecn": "FooterNav_Company_Footer_Company_Investors_nav", "ehn": "FooterNav"}">Investors</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/diversity/default?icid=DSM_Footer_Company_Diversity" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Company_Diversity and inclusion_nav", "ecn": "FooterNav_Company_Footer_Company_DiversityAndInclusion_nav", "ehn": "FooterNav"}">Diversity and inclusion</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/accessibility" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Company_Accessibility_nav", "ecn": "FooterNav_Company_Footer_Company_Accessibility_nav", "ehn": "FooterNav"}">Accessibility</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/corporate-responsibility/sustainability?icid=DSM_Footer_Sustainability" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "FooterNav", "cN": "FooterNav_Company_Sustainability_nav", "ecn": "FooterNav_Company_Footer_Company_Sustainability_nav", "ehn": "FooterNav"}">Sustainability</a>
</uhf-footer-nav-group>
</div>
</uhf-footer-nav>
<div slot="uhf-footer-california-privacy-link">
<a class="uhf-footer-link" href="https://aka.ms/yourcaliforniaprivacychoices" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "LegalNav", "cN": "LegalNav_California Privacy_nav", "ecn": "LegalNav_CaliforniaPrivacy_nav", "ehn": "LegalNav"}">
<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve" height="16" width="43">
<title>Your Privacy Choices Opt-Out Icon</title>
<path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"/>
<path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"/>
<path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"/>
<path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"/>
</svg>
<span>Your Privacy Choices</span>
</a>
<noscript>
<a class="uhf-footer-link" href="https://aka.ms/yourcaliforniaprivacychoices" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "LegalNav", "cN": "LegalNav_California Privacy_nav", "ecn": "LegalNav_CaliforniaPrivacy_nav", "ehn": "LegalNav"}">
<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve" height="16" width="43">
<title>Your Privacy Choices Opt-Out Icon</title>
<path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"/>
<path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"/>
<path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"/>
<path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"/>
</svg>
<span>Your Privacy Choices</span>
</a>
</noscript>
</div>
<a slot="uhf-footer-consumer-health-privacy-link" class="uhf-footer-link" href="https://go.microsoft.com/fwlink/?linkid=2259814" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "LegalNav", "cN": "LegalNav_Consumer Health Privacy_nav", "ecn": "LegalNav_ConsumerHealthPrivacy_nav", "ehn": "LegalNav"}">Consumer Health Privacy</a>
<uhf-footer-menu slot="uhf-footer-menu" data-nav-label="Microsoft corporate links">
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/sitemap1.aspx" id="uhf-Footer_Sitemap" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "LegalNav", "cN": "LegalNav_Sitemap_nav", "ecn": "LegalNav_Footer_Sitemap_nav", "ehn": "LegalNav"}">Sitemap</a>
<a class="uhf-footer-link" href="https://support.microsoft.com/contactus" id="uhf-Footer_ContactUs" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "LegalNav", "cN": "LegalNav_Contact Microsoft_nav", "ecn": "LegalNav_Footer_ContactUs_nav", "ehn": "LegalNav"}">Contact Microsoft</a>
<a class="uhf-footer-link" href="https://go.microsoft.com/fwlink/?LinkId=521839" id="uhf-Footer_PrivacyandCookies" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "LegalNav", "cN": "LegalNav_Privacy _nav", "ecn": "LegalNav_Footer_PrivacyandCookies_nav", "ehn": "LegalNav"}">Privacy </a>
<a class="uhf-footer-link" href="#" id="uhf-Footer_ManageCookies" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "LegalNav", "cN": "LegalNav_Manage cookies_nav", "ecn": "LegalNav_Footer_ManageCookies_nav", "ehn": "LegalNav"}">Manage cookies</a>
<a class="uhf-footer-link" href="https://go.microsoft.com/fwlink/?LinkID=206977" id="uhf-Footer_TermsOfUse" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "LegalNav", "cN": "LegalNav_Terms of use_nav", "ecn": "LegalNav_Footer_TermsOfUse_nav", "ehn": "LegalNav"}">Terms of use</a>
<a class="uhf-footer-link" href="https://go.microsoft.com/fwlink/?linkid=2196228" id="uhf-Footer_Trademarks" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "LegalNav", "cN": "LegalNav_Trademarks_nav", "ecn": "LegalNav_Footer_Trademarks_nav", "ehn": "LegalNav"}">Trademarks</a>
<a class="uhf-footer-link" href="https://go.microsoft.com/fwlink/?linkid=2196227" id="uhf-Footer_SafetyAndEco" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "LegalNav", "cN": "LegalNav_Safety & eco_nav", "ecn": "LegalNav_Footer_SafetyAndEco_nav", "ehn": "LegalNav"}">Safety & eco</a>
<a class="uhf-footer-link" href="https://www.microsoft.com/en-us/legal/compliance/recycling" id="uhf-Recycling" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "LegalNav", "cN": "LegalNav_Recycling_nav", "ecn": "LegalNav_Recycling_nav", "ehn": "LegalNav"}">Recycling</a>
<a class="uhf-footer-link" href="https://choice.microsoft.com" id="uhf-Footer_AboutourAds" data-m="{"compnm": "UHF", "view": "UHF", "pa": "UniversalFooter", "hn": "LegalNav", "cN": "LegalNav_About our ads_nav", "ecn": "LegalNav_Footer_AboutourAds_nav", "ehn": "LegalNav"}">About our ads</a>
</uhf-footer-menu>
</uhf-footer><!--/ UHF footer -->
<!-- back to top button -->
<div class="back-comment-buttons" data-bi-area="sidebar">
<style>
.evo-right-sidebar {
position: fixed !important;
right: 10px;
bottom: 188px;
z-index: 9;
}
.evo-sidebar-button {
display: none;
visibility: hidden;
padding: 0;
z-index: 99999;
border-radius: 50%;
margin-bottom: 1rem;
}
.evo-sidebar-button:hover {
text-decoration: none;
}
.evo-sidebar-button.active {
display: flex;
visibility: visible;
}
.evo-sidebar-button-inner {
padding: 5px 8.5px;
border-radius: 50%;
background: var(--clr-card-bg);
box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.14), 0px 0px 2px 0px rgba(0, 0, 0, 0.12);
color: var(--clr-landing-navbar);
}
.evo-sidebar-button-inner i,
.evo-sidebar-button-inner i::before {
color: var(--clr-landing-navbar);
}
</style>
<div class="evo-right-sidebar">
<a data-bi-id="click back to top of page" data-bi-name="Back to top" href="#page" title="Back to top" aria-label="click back to top of page" class="evo-sidebar-button back-to-top">
<span class="evo-sidebar-button-inner">
<svg width="30" height="30" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M39.5607 32.0607C38.9749 32.6464 38.0251 32.6464 37.4393 32.0607L24 18.6213L10.5607 32.0607C9.97487 32.6464 9.02513 32.6464 8.43934 32.0607C7.85355 31.4749 7.85355 30.5251 8.43934 29.9393L22.9393 15.4393C23.5251 14.8536 24.4749 14.8536 25.0607 15.4393L39.5607 29.9393C40.1464 30.5251 40.1464 31.4749 39.5607 32.0607Z" fill="currentColor"/>
</svg>
</span>
</a>
</div>
</div>
<!-- back to top button -->
<!-- UHF search functionality query parameter append for all pages excluding landing page -->
<script type="text/javascript">
var serachHtml = '<input type="hidden" name="blog" value="/dotnet/" data-m="{"cN":"HiddenInput_nav","id":"n2c1c9c3m1r1a1","sN":2,"aN":"c1c9c3m1r1a1"}" style="overflow-x: visible;">';
jQuery(".c-uhfh-actions #searchForm").append(serachHtml);
</script>
<!-- Add JSLL tracking to the mobile UHF logo trigger to match the desktop logo (Task 2440600) -->
<script type="text/javascript">
(function () {
// Desktop logo tracking to mirror onto the mobile trigger; falls back to the known UHF blob.
var FALLBACK_DATA_M = '{"compnm":"UHF","view":"UHF","pa":"UniversalHeader","hn":"Anchor","cN":"CatNav_Logo_cont","ecn":"CatNav_Logo_cont","ehn":"Anchor"}';
function applyMobileLogoTracking() {
var desktopLogo = document.querySelector('a.uhf-site-logo');
var dataM = (desktopLogo && desktopLogo.getAttribute('data-m')) || FALLBACK_DATA_M;
var ariaLabel = (desktopLogo && desktopLogo.getAttribute('aria-label')) || 'Dev Blogs';
var triggers = document.querySelectorAll('button.uhf-contextual-nav-trigger');
triggers.forEach(function (trigger) {
if (trigger.dataset.logoTracked) {
return;
}
// Only the brand/logo trigger (mirrors the "Dev Blogs" site logo).
if (!/Dev\s*Blogs/i.test(trigger.textContent)) {
return;
}
trigger.setAttribute('data-m', dataM);
if (!trigger.getAttribute('aria-label')) {
trigger.setAttribute('aria-label', ariaLabel);
}
trigger.dataset.logoTracked = '1';
});
}
document.addEventListener('DOMContentLoaded', applyMobileLogoTracking);
var uhf = document.querySelector('uhf-header') || document.body;
new MutationObserver(applyMobileLogoTracking).observe(uhf, { childList: true, subtree: true });
})();
</script>
</body>
</html>
Sitemap
Кол-во: 0
XML-карта сайта для поисковиков
?
Sitemap.xml помогает поисковику быстрее находить и индексировать страницы. Особенно важен для крупных сайтов и новых страниц, на которые ещё нет входящих ссылок.
Robots.txt не содержит ссылку на карту сайта. Рекомендуется добавить карту сайта и указать ссылку на нее в robots.txt.
Внутренние ссылки
Не найдено
Ссылки на другие страницы своего сайта
?
Внутренние ссылки распределяют ссылочный вес между страницами и помогают поисковику обходить сайт. Пустые анкоры и ссылки на запрещённые robots.txt страницы — типичные ошибки.
Внутренних ссылок на странице 0 оптимально.
Внешние ссылки
Кол-во: 428
Ссылки на сторонние сайты
?
Исходящие внешние ссылки передают часть ссылочного веса на чужие сайты. Ссылки на авторитетные ресурсы безопасны; ссылки на мусорные сайты могут навредить репутации страницы.
Внешних ссылок на странице 428 слишком много. Спрячьте лишние ссылки в тег noindex или атрибут rel='nofollow'!
Показать первые 100 внешних ссылок
| Url | Анкор | Анализировать |
|---|---|---|
| devblogs.microsoft.com |
<span>Dev Blogs</span>
|
Анализировать url |
| devblogs.microsoft.com |
AI
|
Анализировать url |
| devblogs.microsoft.com |
All .NET posts
|
Анализировать url |
| devblogs.microsoft.com |
.NET MAUI
|
Анализировать url |
| devblogs.microsoft.com |
ASP.NET Core
|
Анализировать url |
| devblogs.microsoft.com |
Blazor
|
Анализировать url |
| devblogs.microsoft.com |
Entity Framework
|
Анализировать url |
| devblogs.microsoft.com |
C++
|
Анализировать url |
| devblogs.microsoft.com |
C#
|
Анализировать url |
| devblogs.microsoft.com |
F#
|
Анализировать url |
| devblogs.microsoft.com |
TypeScript
|
Анализировать url |
| devblogs.microsoft.com |
NuGet
|
Анализировать url |
| devblogs.microsoft.com |
Servicing
|
Анализировать url |
| devblogs.microsoft.com |
.NET Blog in Chinese
|
Анализировать url |
| developer.microsoft.com |
Microsoft for Developers
|
Анализировать url |
| devblogs.microsoft.com |
Agent Framework
|
Анализировать url |
| devblogs.microsoft.com |
Develop from the cloud
|
Анализировать url |
| devblogs.microsoft.com |
Xcode
|
Анализировать url |
| devblogs.microsoft.com |
ISE Developer
|
Анализировать url |
| devblogs.microsoft.com |
TypeScript
|
Анализировать url |
| devblogs.microsoft.com |
PowerShell
|
Анализировать url |
| devblogs.microsoft.com |
Python
|
Анализировать url |
| devblogs.microsoft.com |
Java
|
Анализировать url |
| devblogs.microsoft.com |
Java Blog in Chinese
|
Анализировать url |
| devblogs.microsoft.com |
Go
|
Анализировать url |
| blogs.windows.com |
Microsoft Edge Dev
|
Анализировать url |
| devblogs.microsoft.com |
Microsoft 365 Developer
|
Анализировать url |
| devblogs.microsoft.com |
Microsoft Entra Identity Developer
|
Анализировать url |
| devblogs.microsoft.com |
Microsoft Entra PowerShell
|
Анализировать url |
| devblogs.microsoft.com |
Visual Studio
|
Анализировать url |
| devblogs.microsoft.com |
Visual Studio Code
|
Анализировать url |
| devblogs.microsoft.com |
Aspire
|
Анализировать url |
| devblogs.microsoft.com |
All things Azure
|
Анализировать url |
| devblogs.microsoft.com |
Azure SDK
|
Анализировать url |
| devblogs.microsoft.com |
Azure VM Runtime Team
|
Анализировать url |
| azure.microsoft.com |
Microsoft Azure
|
Анализировать url |
| devblogs.microsoft.com |
Azure Cosmos DB
|
Анализировать url |
| devblogs.microsoft.com |
Azure DocumentDB
|
Анализировать url |
| cloudblogs.microsoft.com |
Azure Data Studio
|
Анализировать url |
| devblogs.microsoft.com |
Azure SQL
|
Анализировать url |
| devblogs.microsoft.com |
DevOps
|
Анализировать url |
| devblogs.microsoft.com |
DirectX
|
Анализировать url |
| devblogs.microsoft.com |
Microsoft Foundry
|
Анализировать url |
| devblogs.microsoft.com |
Power Platform
|
Анализировать url |
| devblogs.microsoft.com |
OData
|
Анализировать url |
| devblogs.microsoft.com |
Unified Data Model (IDEAs)
|
Анализировать url |
| devblogs.microsoft.com |
Windows Command Line
|
Анализировать url |
| devblogs.microsoft.com |
#ifdef Windows
|
Анализировать url |
| devblogs.microsoft.com |
Inside MSIX
|
Анализировать url |
| devblogs.microsoft.com |
MIDI and music
|
Анализировать url |
| devblogs.microsoft.com |
React Native
|
Анализировать url |
| devblogs.microsoft.com |
The Old New Thing
|
Анализировать url |
| blogs.windows.com |
Windows Developer
|
Анализировать url |
| devblogs.microsoft.com |
Dev Blogs
|
Анализировать url |
| devblogs.microsoft.com |
.NET Blog
|
Анализировать url |
| aka.ms |
<div class="d-flex align-items-center fw-600">
<span class="white-space-nowrap">Watch now</span>
</div>
|
Анализировать url |
| devblogs.microsoft.com |
.NET 11 Preview 7 is now available!
|
Анализировать url |
| devblogs.microsoft.com |
CoreCLR Progress and the Mono Timeline for .NET MAUI
|
Анализировать url |
| devblogs.microsoft.com |
.NET 11 Preview 6 is now available!
|
Анализировать url |
| devblogs.microsoft.com |
SkiaSharp 4.0 is here: announcing the first stable release
|
Анализировать url |
| devblogs.microsoft.com |
.NET 11 Preview 5 is now available!
|
Анализировать url |
| devblogs.microsoft.com |
.NET at Microsoft Build 2026: Must watch sessions
|
Анализировать url |
| devblogs.microsoft.com |
Give Your .NET MAUI Android Apps a Material 3 Makeover
|
Анализировать url |
| devblogs.microsoft.com |
.NET MAUI Moves to CoreCLR in .NET 11
|
Анализировать url |
| devblogs.microsoft.com |
.NET 11 Preview 4 is now available!
|
Анализировать url |
| devblogs.microsoft.com |
Welcome to SkiaSharp 4.0 Preview 1
|
Анализировать url |
| devblogs.microsoft.com |
2
|
Анализировать url |
| devblogs.microsoft.com |
14
|
Анализировать url |
| devblogs.microsoft.com |
Load more posts
|
Анализировать url |
| dotnet.microsoft.com |
Get Started Today
|
Анализировать url |
| devblogs.microsoft.com |
Aspire
|
Анализировать url |
| devblogs.microsoft.com |
.NET MAUI
|
Анализировать url |
| devblogs.microsoft.com |
AI
|
Анализировать url |
| devblogs.microsoft.com |
ASP.NET Core
|
Анализировать url |
| devblogs.microsoft.com |
Blazor
|
Анализировать url |
| devblogs.microsoft.com |
C#
|
Анализировать url |
| devblogs.microsoft.com |
Developer Stories
|
Анализировать url |
| devblogs.microsoft.com |
NuGet
|
Анализировать url |
| devblogs.microsoft.com |
Azure
|
Анализировать url |
| devblogs.microsoft.com |
.NET Aspire
|
Анализировать url |
| devblogs.microsoft.com |
.NET MAUI
|
Анализировать url |
| devblogs.microsoft.com |
AI
|
Анализировать url |
| devblogs.microsoft.com |
ASP.NET Core
|
Анализировать url |
| devblogs.microsoft.com |
Blazor
|
Анализировать url |
| devblogs.microsoft.com |
Entity Framework
|
Анализировать url |
| devblogs.microsoft.com |
Machine Learning
|
Анализировать url |
| devblogs.microsoft.com |
NuGet
|
Анализировать url |
| devblogs.microsoft.com |
C#
|
Анализировать url |
| devblogs.microsoft.com |
F#
|
Анализировать url |
| devblogs.microsoft.com |
Visual Basic
|
Анализировать url |
| devblogs.microsoft.com |
.NET Internals
|
Анализировать url |
| devblogs.microsoft.com |
.NET Servicing
|
Анализировать url |
| devblogs.microsoft.com |
Containers
|
Анализировать url |
| devblogs.microsoft.com |
Developer Stories
|
Анализировать url |
| devblogs.microsoft.com |
Performance
|
Анализировать url |
| aka.ms |
Download .NET
|
Анализировать url |
| aka.ms |
.NET Community
|
Анализировать url |
| aka.ms |
.NET Documentation
|
Анализировать url |
| aka.ms |
.NET API Browser
|
Анализировать url |
| dotnet.microsoft.com |
.NET Learning Hub
|
Анализировать url |
Конкуренты Готовность: 0%
Конкуренты в Яндексе
Кол-во: 0
Топ сайтов-конкурентов в Яндексе
?
Сайты, чаще всего появляющиеся в ТОПе Яндекса по запросам из семантического ядра этой страницы.
Мы не нашли у вас конкурентов в Яндексе. Сайт или очень молодой или плохо продвигается.
Конкурентов в ТОП-10 Яндекса не нашлось.
Конкуренты в Google
Кол-во: 0
Топ сайтов-конкурентов в Google
?
Сайты, чаще всего появляющиеся в ТОПе Google по запросам из семантического ядра этой страницы.
Конкуренты в Google тоже не найдены. Займитесь продвижением сайта!
Конкурентов в ТОП-10 Google не нашлось.
ЗоЗПП: права потребителей Готовность: 100%
Нарушения
Не выявлены
Признаков дистанционной продажи товаров (интернет-магазина) не обнаружено — требования ЗоЗПП о раскрытии информации продавца к сайту не применяются. Нарушений нет.
ФЗ-149: рекомендательные технологии Готовность: 100%
Нарушения
Не выявлены
Рекомендательные блоки («с этим покупают», «похожие товары» и т.п.) на сайте не обнаружены — требования ст. 10.7 ФЗ-149 к сайту не применяются. Нарушений нет.
ФЗ-38: реклама Готовность: 100%
Нарушения
Не выявлены
Рекламных тематик с обязательными оговорками (медицина, БАД, кредиты и займы, новостройки) на сайте не обнаружено. Нарушений нет.
ФЗ-436: защита детей Готовность: 100%
Нарушения
Не выявлены
Признаков информационной продукции (новости, видео, книги, игры, курсы) не обнаружено — обязательная возрастная маркировка по ФЗ-436 сайту не требуется. Нарушений нет.
Вердикт
Анализ сайта blog.xamarin.com, слабо оптимизирован на 41%. Для хорошей оптимизации и выхода на первые места в поиске требуется:
Постарайтесь исправить общие ошибки.
Исправьте ошибки в мета-тегах.
Исправьте ошибки индексации.
Поделитесь с друзьями: