Для тех, кто любит код, а не скучные тексты.
2025 год принес нам много технических подарков, и один из самых приятных - это .NET 10. Платформа стала быстрее, умнее, а в некоторых местах - просто дружелюбнее к разработчику (как будто в Microsoft наконец-то услышали наше "хочу делать меньше, чтобы получалось больше").
В этой статье разбираем самые важные фишки .NET 10, как они влияют на ежедневную работу программистов, и почему обновиться - лучший вариант.
Основные улучшения производительности
.NET традиционно становится быстрее с каждым релизом, но в этот раз команда решила нажать на газ сильнее.
- 🔧 JIT и GC работают быстрее
Алгоритмы оптимизированы так, что большинство приложений получают прирост производительности “просто из коробки”.
Код работает быстрее, GC работает умнее, а вы - меньше думаете о микротюнинге. - ⚡ Новые возможности AOT-компиляции
AOT стал более взрослым и предсказуемым. Для многих типов проектов теперь он работает стабильнее и дает меньший размер финальных бинарок. Приятный бонус: меньше времени на cold start, что критично для CLI-утилит и serverless-функций.
ASP.NET Core 10 - еще более легкий и чистый
Если вы любите Minimal API, то .NET 10 сделает ваш день:
- Чище Middleware
Код стал короче и более декларативный. Меньше "шума", больше сути. - Больший рендеринг
Razor Оптимизации уменьшили латентность и повысили пропускную способность серверов. - Улучшенное логирование
Больше структурированных логов, более удобный дебаг и совместимость с OpenTelemetry.
Новинки в библиотеках .NET
- Криптография с поддержкой пост-квантовых алгоритмов:
встроена поддержка таких алгоритмов как ML-KEM, ML-DSA и SLH-DSA. Для разработчика это означает: современная защита данных без “доморощенных” решений. - Строковые API, Span/UTF-8, NumericOrdering:
новые методы позволяют работать с байтовыми последовательностями, сравниваниями строк с учетом числовой части, что делает обработку данных более быстрой и выразительной. - Коллекции, JSON-сереализация:
добавлены удобные методы вOrderedDictionary<TKey, TValue>, новые опции вSystem.Text.Json- например, настройка циклических ссылок. - Другие библиотеки:
улучшения в глобализации, работе с архивами, сетевыми API (WebSocketStream) и TLS/безопасность для macOS.
C# 14 - язык стал еще удобнее (и менее занудным)
Вместе с .NET 10 приходит C# 14, который движется в сторону большей лаконичности и простоты.
Обновления приятные и практичные:
- улучшенные выражения
switch; - расширенная поддержка collection expressions;
- удобный inline-код во многих конструкциях;
- больше контекстов, где можно убрать лишний boilerplate.
File-based apps и директивы #:sdk, #:package, #:property - самая приятная фича релиза
! или: “почему у многих разработчиков впервые за 10 лет появится файл
myscript.csна Desktop”
В .NET 10 появилась действительно классная фича — file-based apps: можно просто взять .cs-файл и запустить его через dotnet run app.cs, без .csproj или .sln.
Но самое интересное - новые директивы, которые прописываются прямо в начале этого .cs-файла. И это меняет игру.
Что это за директивы и как их использовать
В файле вы можете прописать следующие директивы (с #:), чтобы настроить поведение вашего file-based приложения:
#:sdk— указывает, какой SDK использовать для запуска. По умолчанию.NET 10используетMicrosoft.NET.Sdk, но вы можете изменить его, например, наMicrosoft.NET.Sdk.Web, если хотите создать API или веб-приложение.#:package— добавляет NuGet-пакеты прямо из файла.cs. Это означает, что вам не надо создавать.csproj, чтобы подключить библиотеку - просто пропишите эту директиву.#:property— дает возможность задавать свойства MSBuild (например,LangVersion,PublishAotи т.д.) прямо в коде.
Какие преимущества это дает именно вам, как разработчику
- Быстрый старт и минимализм
Нет нужды создавать полноценный проект - один.cs-файл, и все. Идеально для скриптов, утилит, автоматизации или просто быстрого эксперимента. - Гибкость зависимостей
Можно подключать NuGet-пакеты именно тогда, когда они нужны, прямо из файла. Без переписывания.csproj- просто#:package…Это особенно удобно, когда делаешь небольшой скрипт, но все же хочешь воспользоваться мощными библиотеками. - Контроль над компиляцией
Через#:propertyможно задать, например,PublishAot=false, если библиотека, которую вы подключаете, не совместима с AOT (нативной компиляцией), или изменить версию языка (LangVersion). - Публикация нативных приложений
File-based apps теперь поддерживаютdotnet publish app.cs, и, по умолчанию, цель - нативный AOT. Это означает: скрипт, который превращается в небольшой самодостаточный исполняемый файл. - Скрипты “как на Unix”
Поддерживается shebang (#!) - можно сделать.cs-файл исполняемым в Unix-подобных системах, добавив что-то вроде:
Потом chmod +x app.cs — и файл запускается как скрипт.
6. Плавный переход на “большой” проект
Когда логика становится сложнее - не надо переписывать все вручную. Достаточно выполнить:
.NET создаст .csproj, перенесет зависимости и свойства из директив #: в соответствующие секции, и вы получите полноценный проект.
Примеры "в действии": как это может выглядеть
Вот несколько сценариев, как file-based apps + директивы могут реально пригодиться:
Пример 1 — быстрый скрипт из NuGet
- Тут мы подключаем
Newtonsoft.Jsonпрямо через#:package. - Запускаем как
dotnet run script.cs. - Минимум конфигураций - максимум функциональности.
Пример 2 — веб API “в один файлик”
#:sdk Microsoft.NET.Sdk.Web— делает файл “веб-приложением” (Minimal API).#:packageподключает OpenAPI/Swagger.#:property PublishAot=falseвыключает AOT, если это требуется.- Shebang дает возможность запуска как скрипта на Unix.
Почему это круто с точки зрения вашей производительности и кода
- Миниммум “шума”: не нужно шаблонов, лишних файлов - только код, который работает.
- Гибкая конфигурация: без тяжелых
.csprojфайлов, зато со всеми нужными зависимостями. - Быстрое прототипирование: хочешь попробовать идею - просто напиши файл и запусти.
- Масштабирование на ходу: если один файл становится "серьезным", преврати его в проект по команде, без переписывания.
- CLI-утилиты, скрипты, конфигурационные инструменты: file-based apps - это отличный вариант для создания легких инструментов, которые можно переносить, запускать без развертывания полного проекта.
Да, это реально работающий веб-сервис в одном файле! Да, это удобно! И да, это заставляет Python немного нервничать...
Ограничения и что следует принять во внимание
- На момент предыдущих версий поддержка многофайловых сценариев (multi-file) еще была ограничена - во многих блогах указано, что это планируется в .NET 11.
- При сложных сценариях (много классов, зависимостей, конфигураций) все же лучше перейти на полноценный проект.
- DE-поддержка (например, IntelliSense, дебаг) для file-based apps может быть ещё не настолько глубока, как для обычного проекта (в зависимости от расширений). Но это все быстро улучшается.
Другие важные изменения
Тут можно писать много чего, но мы остановимся на основном, на наш взгляд.
- ✔ Улучшенная поддержка Linux и контейнеров
Образы стали меньше, быстрее и безопаснее. - ✔ Расширенная аналитика и диагностика
Больше API для профилирования и телеметрии, легче искать bottleneck’ы. - ✔ Новые возможности в MAUI
Улучшенная стабильность, более быстрый рендеринг UI и обновленные контроллеры.
Практические советы для начала работы с .NET 10
- Если вы пишете утилиту или скрипт — попробуйте создать файл
tool.cs, и запустите:
Используйте #:package для добавления NuGet-библиотек.
- Для обычного проекта - обновите SDK до .NET 10, протестируйте заинтересованные сценарии (с предельной нагрузкой, memory usage).
- Пересмотрите, может ли ваш код воспользоваться file-based apps - возможно, часть задач вы выполняете вручную или пишете скрипт - и теперь переходите на C#.
- В IDE (например, Visual Studio Code) убедитесь, что extension для C# поддерживает новые директивы
#:. - В контексте CLI-инструментов или DevOps-пакетов — подумайте, можно ли упростить создание без проекта (.csproj) и предоставить скрипт клиентам или коллегам.
В качестве вывода
.NET 10 - это не “косметический апдейт”. Этот релиз на самом деле упрощает жизнь разработчикам, дает больше свободы, убирает лишние ритуалы и позволяет фокусироваться на коде, а не на конфигурациях.
File-based apps + директивы - это, без преувеличения, самый приятный сюрприз года. А AOT, оптимизация производительности и обновление ASP.NET Core делают платформу еще сильнее. Если вы работаете с .NET - этот релиз однозначно стоит того, чтобы попробовать его уже сегодня.
А хостинг RealHOST уже позаботился о том, чтобы вы имели надежную и удобную среду, полностью готовую к новой версии .NET 10.