Старый ЭЛТ-монитор, песочные часы и современный ноутбук на рабочем столе

.NET 8 и .NET 9 теряют поддержку 10 ноября: что делать командам с приложениями на VB.NET

РубрикаМиграцияУровеньСредний Чтение6 минОпубликовано Теги.NET 10VB.NETЖизненный циклНовости

10 ноября 2026 года, во вторник обновлений Microsoft, заканчивается поддержка сразу двух версий: .NET 8 (LTS) и .NET 9 (STS). В тот же день на .NET Conf выходит .NET 11. Если ваше приложение на VB.NET или WinForms уже перенесли с .NET Framework на .NET 8, через шесть дней оно останется без исправлений безопасности.

Главное. После 10 ноября приложения на .NET 8 и .NET 9 продолжат работать, но Microsoft больше не выпускает для них патчи безопасности и сервисные обновления. Рекомендуемая цель перехода — .NET 10 с поддержкой до 14 ноября 2028 года.

Совпадение дат — следствие решения, о котором Microsoft объявила в 2025 году: релизы со стандартным сроком поддержки (STS) теперь получают 24 месяца вместо 18. Из-за этого .NET 9 должен был уйти в мае 2026-го, а уходит вместе с .NET 8. Командам, которые обновлялись «на одну версию вперёд», это сэкономило полгода, но теперь переходить нужно всем одновременно.

Для VB.NET-проектов переход с .NET 8 на .NET 10 обычно проще, чем исходный перенос с .NET Framework: язык и WinForms поддерживаются, файл проекта уже в SDK-формате. Сложности, как правило, в сторонних компонентах, сборке и серверах. Если работу нужно заложить в бюджет на следующий квартал, полезно заранее прикинуть стоимость доработки по прайсу подрядчика и сравнить её с затратами своей команды. Ниже — что именно меняется и как проверить свои проекты.

Что меняется 10 ноября

По объявлению в блоге .NET, после 10 ноября Microsoft прекращает для .NET 8 и .NET 9 три вещи: исправления безопасности, сервисные обновления и техническую поддержку. В сам день окончания поддержки каждая версия может получить последний патч, если к этому моменту найдут критическую проблему. Visual Studio в следующих обновлениях будет помечать компоненты .NET 8 и .NET 9 как неподдерживаемые, а установщик предложит их удалить.

Актуальные сроки сведены в политике поддержки .NET: последние патчи — 8.0.33 и 9.0.22 от 25 октября 2026 года, .NET 10 поддерживается до 14 ноября 2028 года. Если на сервере стоит более ранний патч .NET 8, сначала обновитесь до последнего: это закроет уже известные уязвимости, в том числе внеплановый патч, о котором мы писали в новости об уязвимости в декодере Brotli.

Почему .NET 10, а не .NET 11

.NET 11 выходит 10 ноября, ключевой доклад .NET Conf назначен на 8:00 по тихоокеанскому времени, сообщает Thurrott. Но это STS-релиз: при сроке 24 месяца его поддержка закончится примерно тогда же, когда у .NET 10. Выигрыша по сроку нет, а риск выше: часть сторонних библиотек и компонентов догонит новую версию только через несколько месяцев.

Для legacy-приложения на VB.NET аргумент ещё сильнее. Новые возможности C# 15, вроде union-типов, в Visual Basic не появятся: Microsoft развивает VB в режиме стабильности, без новых языковых конструкций. Значит, в .NET 11 вы получите новую среду выполнения без пользы для своего кода. .NET 10 даёт тот же срок поддержки при проверенной экосистеме.

Как проверить свои проекты

Начните с инвентаризации: какие среды выполнения стоят на серверах и какие проекты на что нацелены.

check-dotnet-targets.ps1PowerShell
# Какие среды выполнения и SDK стоят на сервере или рабочей машине
dotnet --list-runtimes
dotnet --list-sdks

# Какие проекты в репозитории нацелены на .NET 8 или .NET 9
Get-ChildItem -Recurse -Include *.vbproj, *.csproj |
    Select-String -Pattern '<TargetFrameworks?>.*net(8|9)\.0'

# В .vbproj переход выглядит так (WinForms):
# <TargetFramework>net8.0-windows</TargetFramework>  →  <TargetFramework>net10.0-windows</TargetFramework>
Не забудьте про приложения, опубликованные как framework-dependent: они используют среду выполнения, установленную на машине. Если сервер останется только с .NET 8, приложение, пересобранное под .NET 10, просто не запустится. Self-contained-сборки несут среду выполнения с собой, их нужно пересобрать и переразвернуть.

Дальше — сторонние NuGet-пакеты и компоненты интерфейса. Типичные сложности при обновлении WinForms-проекта мы разбирали в статье о переносе WinForms на VB.NET на современный .NET: тот же порядок работ подходит и для шага с .NET 8 на .NET 10. Если проектов много и непонятно, с чего начать, пройдитесь по чек-листу аудита legacy-кодовой базы.

Что сделать на этой неделе

Короткий план: 1) поставить последние патчи 8.0.33 или 9.0.22 там, где их ещё нет; 2) составить список приложений и серверов на .NET 8 и .NET 9; 3) установить среду выполнения .NET 10 рядом со старой (версии ставятся параллельно); 4) перевести TargetFramework на net10.0 в одном некритичном проекте и прогнать тесты; 5) составить график перевода остальных и не ждать .NET 11.

Если приложение ещё живёт на .NET Framework 4.x или VB6, срочности из-за этой даты нет, но и откладывать стратегическое решение не стоит: как прикинуть объём и цену такого переноса, мы описали в материале об оценке стоимости миграции legacy.

Вопросы и ответы

Приложение на .NET 8 перестанет запускаться 11 ноября?

Нет. Microsoft прямо пишет, что приложения на .NET 8 и .NET 9 продолжат работать. Перестанут выходить исправления безопасности и сервисные обновления, а обращения в поддержку Microsoft по этим версиям больше не принимаются. Риск растёт постепенно: каждая следующая уязвимость в среде выполнения останется у вас открытой.

Почему не перейти сразу на .NET 11?

.NET 11 — релиз со стандартным сроком поддержки (STS), Microsoft поддерживает такие версии 24 месяца, то есть примерно до ноября 2028 года. .NET 10 — релиз с долгосрочной поддержкой до 14 ноября 2028 года и уже год как в эксплуатации, библиотеки под него обновлены. Срок почти одинаковый, а риск выше у свежего релиза, поэтому для legacy-приложения разумнее .NET 10.

Касается ли это приложений на .NET Framework 4.8?

Нет. .NET Framework 4.8 и 4.8.1 входят в состав Windows и поддерживаются вместе с ней, у них отдельный жизненный цикл. Новость касается только современного .NET: если в файле проекта стоит TargetFramework net8.0 или net9.0 (в том числе net8.0-windows для WinForms), приложение под это попадает.

Читайте также