Какие версии .NET используются и почему
Что проверяют
Следите ли вы за платформой и понимаете ли, чем .NET Framework отличается от современного .NET, а LTS от STS. Следом почти всегда спрашивают, на какой версии живёт ваш текущий проект и что мешает его обновить.
Как отвечать
Разложите линейку на три ветки и скажите, где каждая находится сейчас:
- .NET Framework 4.8.1: последняя версия ветки, только Windows, новых возможностей не будет. Поддерживается вместе с Windows, поэтому держится в легаси: WebForms, серверный WCF, код на
System.WebиAppDomain; - .NET Core с 1.0 по 3.1: переписанная кроссплатформенная платформа, сейчас целиком без поддержки;
- .NET 5 и новее: продолжение .NET Core под единым именем. Framework в него не «влили», просто ветка Core стала основной.
Дальше про политику выпуска. Новая версия выходит каждый ноябрь, чётные получают статус LTS и три года поддержки, нечётные STS, и начиная с .NET 9 им дают 24 месяца вместо 18. На сентябрь 2026 актуальная LTS это .NET 10 с поддержкой до ноября 2028, а .NET 8 и .NET 9 теряют поддержку в один день, 10 ноября 2026. В ноябре ожидается .NET 11 со статусом STS.
Почему выбирают ту или иную версию: новый сервис начинают на текущей LTS, чтобы обновляться раз в пару лет. STS берут, когда нужна конкретная возможность и команда готова обновляться ежегодно. Framework остаётся там, где переписывать дорого. Общие библиотеки собирают под несколько целей через TargetFrameworks, например net10.0;net48, или под netstandard2.0, если их подключают и старый, и новый код. Версию SDK в репозитории фиксирует global.json.
Где спотыкаются
Называют .NET 6 или .NET 7 «современным выбором для новых проектов». Обе версии давно без поддержки, а сервис без патчей безопасности не пройдёт аудит.
Путают .NET Standard с версией платформы. Это спецификация API для библиотек, после 2.1 новых версий не будет, и приложение под неё не пишут.
Говорят «обновимся, это просто смена TargetFramework». Миграция с Framework упирается в зависимости: серверный WCF переводят на CoreWCF или gRPC, WebForms переписывают целиком, а часть старых NuGet-пакетов под новую платформу просто не существует.