Вышел .NET 11: C# 15 с юнион-типами, а .NET 8 и .NET 9 больше не получают патчи
Microsoft выпустила новую версию открытой платформы. Разбираем, что изменилось и что делать тем, у кого на Linux-серверах работают приложения на ASP.NET Core 8.
10 ноября 2026 года команда .NET объявила о выпуске .NET 11, вместе с ним вышел C# 15. Это выпуск со стандартным сроком поддержки (STS): обновления будут выходить два года. Долгосрочной (LTS) веткой остаётся .NET 10. О релизе также написали Visual Studio Magazine и Linuxiac.
Администраторам важнее другая строка из того же анонса: .NET 8 и .NET 9 сняты с поддержки 10 ноября 2026 года. Сервисы на этих версиях продолжат работать, но исправлений безопасности для них больше не будет. Какие рантаймы стоят на сервере, покажет команда dotnet --list-runtimes.
Если веб-приложение компании написано на ASP.NET Core 8, ближайший безопасный шаг — перевести его на .NET 10 LTS, а не прыгать сразу на 11. Когда своих разработчиков на миграцию нет, её можно отдать команде, которая занимается разработкой веб-приложений. В ТЗ стоит записать проверку зависимостей NuGet, прогон тестов и выкладку без простоя.
Что нового в .NET 11 и C# 15
- Юнион-типы. Значение может принадлежать одному из заранее объявленных типов, а компилятор проверяет, что
switchразбирает все варианты. Этой функции сообщество C# ждало много лет. - Закрытые иерархии классов. Наследование можно ограничить сборкой, в которой объявлен базовый класс.
- Мелочи языка. Индексаторы-расширения, аргументы в collection expressions, метки для
breakиcontinue. - Рантайм. По словам Microsoft, в выпуске сотни оптимизаций рантайма и библиотек. JIT убирает лишние проверки границ массивов и чаще девиртуализирует вызовы, а в Native AOT подешевели вызовы через интерфейсы.
- SDK. Сервер MSBuild по умолчанию остаётся запущенным между вызовами CLI, поэтому повторные сборки идут быстрее. Установщики SDK для Linux и macOS похудели за счёт дедупликации сборок.
Что изменилось в ASP.NET Core 11 и EF Core 11
Главные изменения ASP.NET Core 11 касаются валидации, документации API и real-time-соединений:
- Асинхронная валидация. Правило проверки может сходить в базу данных, не блокируя поток.
- OpenAPI 3.2. Документация API по умолчанию генерируется в этом формате.
- SignalR. Учётные данные обновляются без переподключения клиента.
- Blazor. Появился компонент
CacheViewдля кэширования статического рендеринга.
EF Core 11 убирает лишние JOIN в запросах по навигационным свойствам и лучше транслирует GroupBy. Векторный поиск в SQL Server пока помечен как экспериментальный.
Что сделать на серверах в ближайшие недели
- Составьте список сервисов на .NET 8 и 9 по всем хостам.
- Запланируйте переход этих сервисов на .NET 10 LTS.
- Сервисы в контейнерах пересоберите на обновлённых базовых образах.
Новую версию удобнее выкатывать постепенно: схемы описаны в материале о деплое без простоя, а про оркестрацию небольших стендов — в разборе Kubernetes для небольших команд.