Microsoft выпустила .NET 11 — новую версию своей открытой кроссплатформенной платформы разработки программного обеспечения. Обновление приносит язык C# 15, сотни оптимизаций среды выполнения, ускорение инструментов командной строки и улучшения для ASP.NET Core, Blazor, .NET MAUI и Entity Framework Core. Разработчики также получили новые возможности для создания приложений с искусственным интеллектом, включая шаблон MCP-сервера непосредственно в SDK.
Релиз состоялся 10 ноября 2026 года. Вместе с платформой обновились компиляторы и библиотеки, а также инструменты для сборки, тестирования и публикации приложений. Одно из наиболее заметных изменений — появление в C# полноценной поддержки union types, позволяющей описывать значения, которые могут представлять один из нескольких заранее определённых типов. Это помогает создавать более строгие модели данных и обнаруживать некоторые ошибки ещё на этапе компиляции.
При этом .NET 11 относится к ветке Standard Term Support (STS) и будет поддерживаться два года. Тем, кому важнее длительный жизненный цикл, Microsoft предлагает оставаться на .NET 10 LTS, которая продолжает получать обновления безопасности и обслуживания.
Официальный анонс опубликован в блоге .NET, а установочные пакеты для Windows, Linux и macOS доступны на официальной странице загрузки .NET 11.
C# 15: объединения типов и закрытые иерархии классов
Одно из главных нововведений .NET 11 — язык C# 15, который становится стандартной версией для проектов, ориентированных на новую платформу. Разработчики получили несколько новых конструкций, упрощающих описание типов, работу с коллекциями и управление потоком выполнения.
Наиболее интересная возможность — union types, или объединённые типы. Они позволяют определить тип, который может содержать значение только одного из нескольких указанных вариантов. Это особенно удобно, когда метод возвращает разные результаты, например найденный объект или сообщение об отсутствии записи.
Представим сервис, который ищет товар по идентификатору. В традиционной реализации разработчик мог использовать базовый класс, интерфейс, объект или специальную структуру с несколькими полями. Union types позволяют выразить эту логику непосредственно в системе типов:
ProductLookup result = new Product(42, "Keyboard");
string message = result switch
{
Product product => $"Found {product.Name}",
ProductNotFound missing => $"No product with ID {missing.Id}",
};
Console.WriteLine(message);
public sealed record Product(int Id, string Name);
public sealed record ProductNotFound(int Id);
public union ProductLookup(Product, ProductNotFound);
В этом примере ProductLookup может представлять только Product или ProductNotFound. Компилятор способен проверить, обработаны ли все допустимые варианты в выражении switch. Если разработчик добавит новый вариант, но забудет учесть его в соответствующем выражении, это можно обнаружить ещё до запуска программы.
Для крупных приложений это важное преимущество: меньше неоднозначных состояний, меньше проверок на null и более понятные контракты между компонентами системы.
Второе существенное нововведение — closed hierarchies, или закрытые иерархии наследования. Класс с модификатором closed ограничивает возможность прямого наследования классами из других сборок. Компилятор получает более точную информацию о возможных наследниках и может выполнять дополнительные проверки полноты обработки вариантов.
Также C# 15 получил:
- Collection expression arguments. Возможность передавать аргументы конструкторам и фабричным методам с использованием синтаксиса выражений коллекций.
- Extension indexers. Индексаторы расширений, позволяющие добавлять индексный синтаксис для типов без изменения их исходного кода.
- Labeled break и continue. Именованные переходы для управления вложенными циклами.
- Memory safety. Новые возможности, связанные с безопасностью работы с памятью, которые на момент выпуска сохраняют статус предварительной функциональности.
В совокупности изменения делают C# более выразительным языком для создания сложных приложений. Особенно полезными union types могут оказаться в API, системах обработки событий, бизнес-логике и приложениях, где важно явно описывать все возможные состояния объектов.
F# 11: меньше выделений памяти и улучшенная асинхронность
Обновление затронуло и F# — функциональный язык программирования из экосистемы .NET. В версии F# 11 разработчики сосредоточились на сокращении потребления памяти компилятором и уменьшении количества выделений памяти при работе с коллекциями библиотеки FSharp.Core.
Дополнительно появились инструменты для ограничения параллельной асинхронной работы. Это важно для приложений, которые одновременно обрабатывают большое количество элементов или обращаются к внешним сервисам. Если запускать все операции без ограничений, можно перегрузить процессор, оперативную память, базу данных или сетевые соединения.
Возможность задавать пределы параллелизма помогает сделать поведение приложения более предсказуемым. Разработчик может контролировать количество одновременно выполняемых операций, не создавая собственную сложную инфраструктуру управления задачами.
Часть новых возможностей F# также остаётся в предварительном статусе. Поэтому при использовании их в производственных проектах необходимо учитывать соответствующие ограничения и рекомендации Microsoft.
.NET Runtime: сотни оптимизаций производительности
Microsoft заявляет о сотнях улучшений среды выполнения .NET 11. Они затрагивают JIT-компилятор, управление памятью, генерацию машинного кода, аппаратные инструкции и работу Native AOT. Главная особенность таких изменений заключается в том, что многие из них не требуют переписывать существующие приложения.
JIT-компилятор получил дополнительные возможности оптимизации. Он лучше устраняет избыточные проверки границ массивов, сокращает ненужные условные переходы и эффективнее выполняет девиртуализацию — замену виртуальных вызовов методов на более прямые операции, когда компилятор может определить фактический тип объекта.
Также улучшена оптимизация операций, параметры которых известны заранее. Например, некоторые вызовы SequenceEqual теперь могут эффективнее обрабатываться компилятором, если значения входных данных известны на этапе компиляции.
Для приложений, активно использующих интерфейсы, улучшения получила Native AOT. Механизм диспетчеризации интерфейсных вызовов использует общий вспомогательный компонент, благодаря чему сокращается объём генерируемого кода в местах вызова и повышается производительность соответствующих сценариев.
Обновлена и поддержка современных аппаратных возможностей:
- Добавлена поддержка инструкций FP16 для операций с типом Half на совместимых процессорах x64 и Arm64.
- Расширены возможности SIMD-векторизации и создания векторных последовательностей.
- Улучшена модель оценки стоимости аппаратных инструкций для JIT-компилятора.
- Добавлены дополнительные оптимизации для вычислений и обработки последовательностей данных.
Результат будет зависеть от конкретной нагрузки. Приложение, которое интенсивно использует интерфейсы и вычисления, может получить заметную пользу от одних оптимизаций, тогда как обычный веб-сервис с преобладанием сетевых запросов будет зависеть от других факторов.
Подробный технический разбор сотен изменений опубликован Стивеном Тоубом в статье Performance Improvements in .NET 11. В ней приводятся примеры кода, результаты тестирования и объяснения работы отдельных оптимизаций.
Runtime Async: новая модель выполнения асинхронного кода
Одним из наиболее интересных изменений .NET 11 стала технология Runtime Async. Она меняет способ выполнения асинхронных операций: вместо традиционного использования сгенерированных компилятором машинных состояний значительная часть механизма приостановки и возобновления работы переносится непосредственно в среду выполнения.
В привычной модели async/await компилятор преобразует асинхронный метод в специальную структуру состояния. Она хранит информацию о текущем этапе выполнения, необходимых переменных и точке, в которой работа должна продолжиться после завершения ожидания.
Runtime Async предлагает другой подход, при котором соответствующие операции выполняются на уровне runtime. Это позволяет уменьшить некоторые накладные расходы и улучшить диагностику. В частности, отладчики и профилировщики могут отображать более понятные стеки вызовов, показывая реальные асинхронные методы вместо значительной части внутренней инфраструктуры их выполнения.
Microsoft также улучшила производительность Runtime Async за счёт оптимизации продолжений задач, сокращения генерируемого кода и более эффективной работы с распространёнными сценариями await.
Однако важно учитывать статус технологии. Runtime Async остаётся предварительной возможностью, которую разработчик должен включить отдельно. Для проекта с целевой платформой net11.0 можно использовать следующую настройку:
<PropertyGroup>
<Features>runtime-async=on</Features>
</PropertyGroup>
Перед включением нового механизма в производственном приложении необходимо проверить совместимость используемых библиотек, отладчиков и инструментов профилирования. Особенно осторожно следует подходить к большим проектам, где асинхронная модель используется практически во всех компонентах.
Native AOT и ускорение инструментов командной строки
Заметные изменения получила и среда разработки. В .NET 11 SDK по умолчанию используется Native AOT-хост для командной строки. Благодаря этому часть команд может выполняться без запуска полноценной управляемой среды .NET.
Это особенно заметно при выполнении простых операций, например запросе справки, проверке версии или запуске некоторых инструментов. Раньше даже небольшие команды могли требовать инициализации управляемого CLI, что добавляло задержку. Новый подход позволяет обойти этот этап там, где полноценное выполнение .NET-кода не требуется.
Ещё одно улучшение — постоянная работа сервера MSBuild. Вместо повторного запуска и инициализации при каждом обращении сервер может оставаться активным между вызовами командной строки. Это сокращает накладные расходы при частых сборках и работе с несколькими проектами.
Для Linux и macOS уменьшен размер установочных пакетов SDK благодаря устранению дублирующихся сборок. Это упрощает распространение платформы и экономит место при установке на рабочие станции и серверы сборки.
Другие изменения SDK включают:
- Поддержку директивы
#:includeдля разделения приложений, создаваемых на основе отдельных файлов, на несколько исходных файлов. - Создание и редактирование фильтров решений .slnf через командную строку.
- Улучшения
dotnet watch, включая интеграцию с Aspire, автоматическое восстановление после сбоев и выбор мобильных устройств. - Дополнительные параметры
dotnet testдля управления временем выполнения тестов и ограничениями количества ошибок. - Возможности публикации контейнеров с воспроизводимыми идентификаторами образов.
- Настройку минимального возраста опубликованных пакетов NuGet перед тем, как они станут доступны для выбора.
Последняя возможность особенно интересна с точки зрения безопасности цепочки поставок программного обеспечения. Администраторы могут задать минимальный срок с момента публикации пакета, прежде чем он станет допустимым для использования. Это помогает снизить риск автоматического подключения только что опубликованных вредоносных или ошибочных версий зависимостей.
ASP.NET Core 11: улучшения для веб-приложений и API
В .NET 11 обновилась и платформа ASP.NET Core, используемая для создания веб-сайтов, REST API, серверных приложений и сетевых сервисов. Одно из главных изменений — асинхронная проверка данных.
Ранее многие сценарии валидации были ориентированы на синхронное выполнение. Однако современные приложения нередко должны обращаться к базе данных или внешнему сервису, чтобы проверить корректность введённых данных. Например, при регистрации пользователя требуется убедиться, что адрес электронной почты ещё не занят.
Асинхронная валидация позволяет выполнять подобные проверки без блокирования потоков на время ожидания ввода-вывода. Это особенно полезно для веб-сервисов с большим количеством одновременных запросов.
Ещё одно изменение — OpenAPI 3.2 становится стандартной версией для генерируемой документации API. Обновление важно для команд, которые используют автоматическую генерацию клиентских библиотек, описание контрактов и интеграцию сервисов между собой.
Blazor и SignalR также получили новые возможности. Среди них:
- Blazor CacheView. Компонент для кэширования результатов отображения компонентов в сценариях статического серверного рендеринга.
- Управление неактивными сессиями. Интерактивные серверные приложения Blazor могут приостанавливать неактивные браузерные сессии, освобождая ресурсы сервера.
- Обновление аутентификации SignalR. Соединения могут обновлять учётные данные без необходимости разрывать и заново устанавливать подключение.
- Инструменты OpenAPI. Улучшена поддержка описания и документирования веб-интерфейсов.
Эти изменения особенно актуальны для приложений, где одновременно работают тысячи пользователей. Снижение расхода ресурсов на неактивные сессии и более гибкое управление соединениями помогают эффективнее использовать серверную инфраструктуру.
ИИ-разработка: MCP, Microsoft Agent Framework и Blazor AI
Microsoft продолжает интегрировать инструменты искусственного интеллекта в экосистему .NET. В SDK 11 появился шаблон проекта MCP-сервера, позволяющий быстрее создавать приложения, которые предоставляют ИИ-моделям доступ к внешним инструментам и данным.
MCP (Model Context Protocol) — протокол взаимодействия между ИИ-приложениями и внешними инструментами. С его помощью модель может не только генерировать текст, но и получать сведения из подключённых систем, вызывать функции и выполнять действия в рамках предоставленных разрешений.
Для разработчиков .NET это означает возможность создавать MCP-серверы на привычном языке и использовать существующую инфраструктуру Microsoft. Вместе с библиотекой Microsoft.Extensions.AI и Microsoft Agent Framework платформа предлагает набор компонентов для построения приложений с агентами и многоэтапными сценариями.
Blazor также получил экспериментальные ИИ-компоненты. Они ориентированы на создание интерфейсов диалоговых приложений, поддерживающих потоковую передачу ответов, вызов инструментов и запрос подтверждения пользователя перед выполнением отдельных действий.
Таким образом, .NET 11 развивается не только как платформа для классических веб-сервисов и настольных приложений. Microsoft стремится сделать её полноценной средой для разработки агентных систем, в которых языковая модель взаимодействует с данными, инструментами и пользовательским интерфейсом.
При этом MCP-сервер, библиотеки и агентные компоненты не отменяют требований к безопасности. Разработчикам необходимо ограничивать доступ к инструментам, проверять входные данные и не предоставлять модели полномочия, которые не нужны для конкретного сценария.
Библиотеки .NET: Zstandard, JSON Lines и новые возможности LINQ
Встроенные библиотеки .NET 11 получили множество дополнений, которые позволяют отказаться от сторонних решений или упростить существующий код.
Одно из наиболее практичных изменений — поддержка Zstandard в пространстве имён System.IO.Compression. Zstandard (Zstd) — алгоритм сжатия, разработанный для сочетания высокой скорости и хорошей степени сжатия. Он широко используется в современных системах хранения данных, контейнерных технологиях и инструментах обработки больших объёмов информации.
Появление встроенной поддержки упрощает работу с этим форматом и снижает необходимость подключать дополнительные библиотеки. Также обновлены API для работы с ZIP-архивами, включая проверку CRC32 при чтении записей.
Существенные изменения получила System.Text.Json. Теперь она поддерживает C# union types, дискриминируемые объединения F# и формирование JSON Lines из асинхронных последовательностей. JSONL представляет собой формат, в котором каждая строка содержит отдельный JSON-объект. Он удобен для потоковой обработки логов, событий и больших наборов записей.
Появились и новые адаптеры потоков для работы с данными в памяти:
ReadOnlyMemoryStream— поток для чтения данных из ReadOnlyMemory.WritableMemoryStream— поток с возможностью записи в область памяти.ReadOnlySequenceStream— адаптер для чтения сегментированных последовательностей ReadOnlySequence.StringStream— потоковое представление строковых данных.
Главное преимущество таких адаптеров — возможность использовать существующие данные в памяти с API, ожидающими Stream, без предварительного объединения всех сегментов в один новый буфер. Это может уменьшить количество копирований и давление на сборщик мусора в приложениях, активно работающих с большими объёмами данных.
LINQ получил оператор FullJoin. В отличие от обычного соединения, он сохраняет элементы из обеих коллекций, даже если для них не нашлось соответствующей записи с другой стороны. Это удобно, например, при сравнении двух инвентаризационных списков, когда необходимо обнаружить как отсутствующие элементы первого списка, так и отсутствующие элементы второго.
Также расширены API для запуска внешних процессов, сетевых запросов, DNS-разрешения имён, криптографии, трассировки и числовых вычислений. Полный перечень изменений опубликован в официальной документации Microsoft Learn.
Entity Framework Core 11: улучшенная генерация SQL
Разработчики приложений, использующих Entity Framework Core, также получили обновление. EF Core 11 улучшает преобразование LINQ-запросов в SQL и позволяет в большем количестве сценариев устранять лишние соединения таблиц.
Изменения затрагивают работу с GroupBy, раздельные запросы и навигационные свойства. В результате некоторые запросы могут генерировать более компактный SQL-код, что потенциально снижает нагрузку на базу данных.
Новый оператор LINQ FullJoin также получил поддержку преобразования в SQL для реляционных провайдеров, которые способны реализовать соответствующую операцию.
Для SQL Server добавлены возможности работы с векторными индексами и приближённым поиском по векторам. Это направление особенно актуально для ИИ-приложений, использующих векторные представления текста, изображений и других данных.
Однако соответствующие возможности SQL Server и API EF Core пока имеют экспериментальный статус. Перед использованием в производственной системе необходимо проверить ограничения, совместимость провайдера и требования к версии базы данных.
.NET MAUI 11: CoreCLR становится средой выполнения по умолчанию
Обновление затронуло и .NET MAUI — платформу для разработки приложений под Windows, Android, iOS и macOS с использованием общей кодовой базы на C#.
В .NET MAUI 11 CoreCLR становится средой выполнения по умолчанию на поддерживаемых платформах. Это важное изменение архитектуры, поскольку CoreCLR является основной средой выполнения .NET и предоставляет развитые механизмы JIT-компиляции, управления памятью и диагностики.
Кроме того, улучшены XAML Hot Reload и работа с нативными элементами управления. Разработчики получают более удобный цикл изменения интерфейса и проверки результата без постоянной полной пересборки приложения.
Обновлены и инструменты тестирования мобильных проектов. SDK получил дополнительные возможности выбора устройств и запуска тестов для Android, iOS, macOS и Mac Catalyst.
.NET 8 и .NET 9 завершили поддержку
Выход .NET 11 совпал с важным изменением жизненного цикла предыдущих версий. 10 ноября 2026 года .NET 8 и .NET 9 достигли окончания поддержки. Это означает, что Microsoft прекращает выпускать для них стандартные обновления безопасности и обслуживания.
Организациям, которые продолжают использовать эти версии, необходимо запланировать миграцию на поддерживаемую платформу. При выборе целевой версии стоит учитывать не только новые функции, но и срок сопровождения.
Основные варианты на момент выхода .NET 11:
- .NET 10 LTS. Версия с долгосрочной поддержкой, рассчитанная на организации, которым важен более продолжительный период обслуживания.
- .NET 11 STS. Более новая версия с актуальными возможностями языка и платформы, но с двухлетним сроком поддержки.
STS не означает более низкое качество обновлений или отсутствие исправлений безопасности. Различие между STS и LTS заключается прежде всего в продолжительности сопровождения. Обе модели предусматривают выпуск исправлений и обслуживание в рамках политики Microsoft.
Официальные сроки поддержки отдельных версий можно проверить на странице политики поддержки .NET.
Как установить .NET 11
SDK и среды выполнения .NET 11 доступны для Windows, Linux и macOS. Для полноценной разработки рекомендуется устанавливать SDK, который включает компилятор, инструменты командной строки, библиотеки и среду выполнения.
После установки проверить версию можно командой:
dotnet --version
Для создания простого консольного приложения достаточно выполнить:
dotnet new console -n HelloDotnet11 -f net11.0
cd HelloDotnet11
dotnet run
Если проект использует C# 15, соответствующие возможности языка доступны по умолчанию при целевой платформе net11.0.
Для существующих проектов переход требует более внимательной подготовки. Перед изменением целевой платформы следует проверить используемые NuGet-пакеты, сторонние библиотеки, инструменты сборки и совместимость с новой версией среды выполнения.
Особенно важно проверить минимальные требования к аппаратному обеспечению. В .NET 11 Microsoft обновила минимальные требования к наборам инструкций процессоров x86/x64 и Arm64. Поэтому старые устройства, которые могли запускать предыдущие версии .NET, не обязательно будут совместимы с новой платформой.
Загрузить SDK и отдельные Runtime можно на официальной странице Microsoft .NET 11 Downloads. Для разработки с графической средой Microsoft рекомендует совместимую версию Visual Studio 2026, а пользователи Visual Studio Code могут использовать C# Dev Kit.
Выводы
.NET 11 — масштабное обновление платформы Microsoft, затрагивающее практически все ключевые компоненты экосистемы. C# 15 получил union types и закрытые иерархии классов, Runtime стал эффективнее благодаря сотням оптимизаций, а SDK ускорил повседневные операции за счёт Native AOT-хоста и постоянно работающего MSBuild-сервера.
Для веб-разработчиков важны асинхронная валидация, OpenAPI 3.2 и улучшения Blazor и SignalR. Разработчики ИИ-приложений получили MCP-шаблон, обновлённые библиотеки и экспериментальные компоненты Blazor AI. Встроенная поддержка Zstandard, новые адаптеры потоков и возможности System.Text.Json упрощают создание производительных приложений без лишних зависимостей.
Особого внимания заслуживает завершение поддержки .NET 8 и .NET 9. Организациям, которые продолжают использовать эти версии, необходимо пересмотреть планы сопровождения и выбрать актуальную платформу. Для проектов, которым важна длительная стабильность, разумным вариантом остаётся .NET 10 LTS. .NET 11 подойдёт командам, готовым использовать новые возможности и обновляться в рамках двухлетнего цикла STS.
В целом Microsoft продолжает превращать .NET в универсальную платформу не только для веб-сервисов и корпоративных приложений, но и для мобильной разработки, Native AOT, высокопроизводительных вычислений и ИИ-агентов. При этом наиболее полезные изменения .NET 11 не обязательно требуют немедленной переработки кода: многие оптимизации среды выполнения и библиотек начинают работать автоматически после перехода на новую версию.
Часто задаваемые вопросы
Microsoft выпустила .NET 11 10 ноября 2026 года. В тот же день стали доступны установочные пакеты SDK и Runtime для Windows, Linux и macOS.
Стандартной версией языка для проектов с целевой платформой net11.0 стала C# 15. Она включает union types, закрытые иерархии классов, индексаторы расширений и другие возможности.
Это типы, которые могут представлять одно из нескольких заранее определённых значений. Компилятор помогает проверить, что все допустимые варианты обработаны в выражениях switch. Такая конструкция упрощает описание результатов операций и состояний приложения.
Microsoft сообщает о сотнях оптимизаций JIT-компилятора, Native AOT, библиотек и инструментов SDK. Универсального показателя прироста производительности нет: результат зависит от типа приложения, оборудования и характера нагрузки.
Это новая модель выполнения асинхронного кода, при которой механизмы приостановки и возобновления операций в большей степени обрабатываются средой выполнения .NET. Она может уменьшить накладные расходы и улучшить диагностику, но в .NET 11 остаётся предварительной возможностью, которую нужно включать отдельно.
Платформа получила асинхронную валидацию, OpenAPI 3.2, улучшения Blazor и SignalR. Это упрощает разработку веб-сервисов, API и интерактивных приложений с большим количеством одновременных пользователей.
Да. .NET 11 является кроссплатформенной платформой и доступна для Linux, Windows и macOS. Для Linux также улучшены инструменты SDK и добавлена поддержка внутрипроцессной регистрации аварийных отчётов.
MCP — протокол взаимодействия ИИ-приложений с внешними инструментами и данными. В .NET 11 появился шаблон MCP-сервера, позволяющий разработчикам создавать такие интеграции на основе привычной экосистемы .NET.
Поскольку поддержка .NET 8 и .NET 9 завершилась 10 ноября 2026 года, миграцию необходимо запланировать. При этом .NET 11 не единственный вариант: для более продолжительного срока поддержки можно выбрать .NET 10 LTS.
.NET 11 относится к категории Standard Term Support и получает два года поддержки. Для проектов, которым необходим более длительный цикл сопровождения, Microsoft предлагает LTS-версии.
SDK и Runtime можно бесплатно загрузить с официального сайта Microsoft. Там доступны установщики и инструкции для Windows, Linux и macOS.
