Поделиться через


Новые возможности .NET 9

Узнайте о новых возможностях .NET 9 и найдите ссылки на дополнительную документацию.

.NET 9, преемник .NET 8, имеет особое внимание на облачных приложениях и производительности. Он будет поддерживаться в течение 18 месяцев в качестве стандартного выпуска поддержки (STS). Вы можете скачать .NET 9 здесь.

Новинка для .NET 9, инженерная команда публикует обновления предварительной версии .NET 9 в обсуждениях GitHub. Это отличное место, чтобы задавать вопросы и предоставлять отзывы о выпуске.

Среда выполнения .NET

Среда выполнения .NET 9 включает новую модель атрибутов для переключателей функций с поддержкой тримминга. Новые атрибуты позволяют определить переключатели функций, которые библиотеки могут использовать для переключения областей функциональных возможностей.

Сборка мусора включает функцию динамической адаптации к размеру приложения, которая используется по умолчанию вместо серверной GC.

Среда выполнения также включает в себя многочисленные улучшения производительности, включая оптимизацию циклов, встраивание, а также векторизацию и генерацию кода для Arm64.

Дополнительные сведения см. в статье Новые возможности среды выполнения .NET 9.

Библиотеки .NET

System.Text.Json добавляет поддержку заметок ссылочного типа null и экспорта схем JSON из типов. Он добавляет новые параметры, которые позволяют настроить отступ записи JSON и считывать несколько значений JSON корневого уровня из одного потока.

В LINQ новые методы CountBy и AggregateBy позволяют агрегировать состояние по ключу без необходимости выделения промежуточных групп с помощью GroupBy.

Для типов коллекций тип System.Collections.Generic.PriorityQueue<TElement,TPriority> включает новый метод Remove(TElement, TElement, TPriority, IEqualityComparer<TElement>), который можно использовать для обновления приоритет элемента в очереди.

Для криптографии в .NET 9 добавлен новый метод одноразового хэширования для типа CryptographicOperations. Он также добавляет новые классы, использующие алгоритм KMAC.

Для отражения новый тип PersistedAssemblyBuilder позволяет сохранять созданную сборку. Этот новый класс также включает поддержку PDB, что означает, что вы можете выдавать сведения о символах и использовать его для отладки созданной сборки.

Класс TimeSpan включает новые методы From*, которые позволяют создавать объект TimeSpan из int (вместо double). Эти методы помогают избежать ошибок, вызванных встроенной неточностью в вычислениях с плавающей запятой.

Дополнительные сведения см. в статье Новые возможности библиотек .NET 9.

Пакет SDK для .NET

Пакет SDK для .NET 9 содержит наборы рабочих нагрузок, где все рабочие нагрузки остаются в одной конкретной версии до явного обновления. Для инструментов новый вариант для dotnet tool install позволяет пользователям (а не авторам инструментов) решить, разрешено ли запускать средство в более новой версии среды выполнения .NET, чем для целевой версии средства. В дополнение:

  • Модульное тестирование обеспечивает лучшую интеграцию MSBuild, которая позволяет параллельно выполнять тесты.
  • Аудиты безопасности NuGet выполняются как на прямые, так и транзитивные ссылки на пакеты по умолчанию.
  • Средство ведения журнала терминала включено по умолчанию, а также улучшено удобство использования. Например, общее количество сбоев и предупреждений теперь суммируется в конце сборки.
  • Доступны новые анализаторы скриптов MSBuild ("проверки сборки").
  • Пакет SDK может обнаруживать и настраивать несоответствия версий между пакетом SDK для .NET и MSBuild.
  • Команда dotnet workload history показывает журнал установок и изменений рабочей нагрузки для текущей установки пакета SDK для .NET.

Дополнительные сведения см. в статье Новые возможности пакета SDK для .NET 9.

Строительные блоки ИИ

.NET 9 представляет единый уровень абстракций C# с помощью пакетов Microsoft.Extensions.AI и Microsoft.Extensions.VectorData. Эти абстракции упрощают взаимодействие со службами ИИ, включая небольшие и крупные языковые модели (SLMS и LLM), внедрения, векторные хранилища и ПО промежуточного слоя.

.NET 9 также включает новые типы тензоров, расширяющие возможности искусственного интеллекта. TensorPrimitives и новый тип Tensor<T> расширяют возможности ИИ, обеспечивая эффективную кодировку, манипуляцию и вычисление многомерных данных. Эти типы можно найти в последнем выпуске пакета System.Numerics.Tensors.

TensorPrimitives

  • Расширенная область метода: увеличилось с 40 до почти 200 перегрузк, теперь включая числовые операции, аналогичные Math, MathFи INumber<T>, но для диапазонов значений.
  • Улучшения производительности: многие операции теперь оптимизированы с использованием технологий SIMD для повышения эффективности.
  • Универсальные перегрузки: поддерживает любой тип T, реализующий определенный интерфейс, расширяющийся за пределы простого диапазона значений с плавающей запятой в .NET.

Tensor<T>

  • Строится на основе TensorPrimitives для эффективных математических операций.
  • Обеспечивает эффективное взаимодействие с библиотеками ИИ (ML.NET, TorchSharp, ONNX Runtime) с использованием нулевых копий по возможности.
  • Обеспечивает простую и эффективную обработку данных с помощью операций индексирования и срезов.
  • является экспериментальным в .NET 9.

ML.NET

ML.NET — это кроссплатформенная платформа с открытым кодом, которая обеспечивает интеграцию пользовательских моделей машинного обучения с приложениями .NET.

ML.NET 4.0 обеспечивает следующие улучшения:

  • Новые способы программной настройки параметров MLContext.
  • Загрузка моделей ONNX в виде Stream.
  • Улучшения DataFrame.
  • Новые возможности для токенизаторов.
  • (экспериментальный) порты TorchSharp из семейства моделей Llama и Phi.
  • (Экспериментальный) API конвейера CausalLM.

Дополнительные сведения см. в статье Новые возможности ML.NET.

Токенизаторы

Библиотека Microsoft.ML.Tokenizers предоставляет разработчикам .NET возможности кодирования и декодирования текста в токены. Для сценариев искусственного интеллекта важно управлять контекстом, вычислять затраты и препроцессировать текст при работе с локальными моделями.

В последнем выпуске представлены значительные новые возможности для токенизаторов:

  • Tiktoken для моделей GPT (3, 3.5, 4, 4o, o1) и Llam3
  • Ллама (на основе SentencePiece) для моделей Ллама и Мистраль
  • CodeGen для моделей создания кода, таких как codegen-350M-mono
  • Phi2 (на основе CodeGen) для модели Microsoft Phi2
  • WordPiece
  • Bert (на основе WordPiece) для моделей, которые поддерживаются Bert, таких как optimum--all-MiniLM-L6-v2

.NET Aspire

.NET Aspire — это набор мощных инструментов, шаблонов и пакетов для создания наблюдаемых, рабочих готовых приложений. Последний выпуск .NET Aspire включает усовершенствования панели мониторинга и управления жизненным циклом ресурсов. Он также добавляет новые интеграции и API для повышения гибкости во время разработки. .NET Aspire 9 работает с приложениями .NET 9 и .NET 8. Дополнительные сведения см. в статье Новые возможности .NET Aspire 9.

ASP.NET Core

ASP.NET Основные приложения, созданные с помощью .NET 9, по умолчанию защищены, расширили поддержку предварительной компиляции и улучшили мониторинг и трассировку. Благодаря улучшению производительности, вы увидите более высокую пропускную способность и более быстрое время запуска, и все это с меньшим использованием памяти. ASP.NET Core в .NET 9 включает:

  • Оптимизированная обработка статических файлов, таких как JavaScript и CSS, во время сборки и публикации с автоматическим управлением версиями с отпечатками пальцев.
  • Blazor: новые шаблоны гибридных и веб-приложений, обнаружение режима отрисовки компонентов, новое взаимодействие с рендерингом сервера.
  • API: встроенная поддержка генерации документов OpenAPI с помощью Microsoft.AspNetCore.OpenAPI, улучшенная поддержка AOT.
  • Улучшена безопасность с помощью новых API для проверки подлинности и авторизации.
  • Упрощенная настройка доверенного сертификата разработки в Linux для включения HTTPS во время разработки.

Это лишь некоторые функции и улучшения в .NET 9. Дополнительные сведения см. в статье Новые возможности ASP.NET Core 9.0.

.NET MAUI

Фокус многоплатформенного пользовательского интерфейса приложений .NET (.NET MAUI) в .NET 9 повышает производительность и надежность, а также более глубокую интеграцию для классических и мобильных приложений. .NET MAUI включает в себя новую, более эффективную реализацию CollectionView и CarouselView для iOS и Mac Catalyst, обновления существующих элементов управления, новые события жизненного цикла приложений, а также улучшения для Native AOT и тримминга, направленные на сокращение размера приложения и времени запуска. В дополнение:

  • Для Windows доступен новый элемент управления рабочего стола TitleBar.
  • Новый элемент управления HybridWebView позволяет упростить включение содержимого с поддержкой JavaScript из платформ, таких как ReactJS, Vue.jsи Angular.
  • Entry теперь поддерживает дополнительные режимы клавиатуры.
  • Обработчики управления автоматически отключаются от элементов управления, когда это возможно.
  • Использование MainPage устарело, вместо этого задайте основную страницу приложения, переопределив класс Application.CreateWindow(IActivationState).

Дополнительные сведения об этих новых функциях и других возможностях см. в статье Новые возможности .NET MAUI для .NET 9.

EF Core

Entity Framework Core включает значительные обновления поставщика базы данных для работы с NoSQL в Azure Cosmos DB. Он также включает в себя некоторые шаги по компиляции AOT и предварительно скомпилированных запросов, помимо других улучшений. Дополнительные сведения см. в разделе Новые возможности EF Core 9.

C# 13

C# 13 поставляется с пакетом SDK для .NET 9 и включает следующие новые возможности:

  • коллекции params
  • Новый lock тип и семантика
  • Новая escape-последовательность — \e
  • Улучшения естественного типа группы методов
  • Неявный доступ индексатора в инициализаторах объектов
  • Включить ref локальные и unsafe контексты в итераторах и асинхронных методах
  • Разрешить типам ref struct реализовывать интерфейсы
  • Разрешить ссылочные структуры в качестве аргументов для параметров типа в обобщениях.
  • Частичные свойства и индексаторы теперь разрешены в partial типах.
  • Приоритет разрешения перегрузки позволяет авторам библиотек назначать одну перегрузку в качестве более предпочтительной, чем другие.

Кроме того, C# 13 добавляет функцию предварительной версии: field резервные свойства.

Для получения дополнительной информации см. раздел Новые возможности C# 13.

F# 9

F# 9 поставляется с пакетом SDK для .NET 9 и включает следующие новые возможности:

  • Ссылочные типы, допускающие значение NULL
  • Дискриминируемое объединение. Свойства Is*
  • Частичные активные шаблоны могут возвращать логические значения вместо параметра единицы
  • Предпочитайте методы расширения встроенным свойствам, когда предоставлены аргументы
  • Пустые выражения вычислений
  • Директивы Hash могут принимать нестроковые аргументы
  • Расширенная директива #help в fsi для отображения документации в цикле чтения-оценки-печати (REPL).
  • Разрешить использовать #nowarn с префиксом FS для кодов ошибок, чтобы отключить предупреждения.
  • Предупреждение об атрибуте TailCall в нерекурсивных функциях или значениях, связанных с let
  • Принудительное применение целевых объектов атрибутов
  • Случайные функции для коллекций
  • Поддержка выражений коллекции C# для списков и наборов F#
  • Различные улучшения в продуктивности разработчиков, производительности и инструментах.

Дополнительные сведения см. в статье Новые возможности F# 9.

Windows Presentation Foundation

WPF в .NET 9 обеспечивает расширенную поддержку для создания современных приложений, предлагая ряд улучшений тем и многое другое нового.

  • Поддержка темы Windows Fluent.
  • Добавлена поддержка тем для светлых и темных режимов Windows.
  • Темы теперь поддерживают акцентный цвет Windows.
  • Отрисовка шрифта улучшена для поддержки лигатур на основе дефиса.
  • BinaryFormatter больше не поддерживается.

Дополнительные сведения см. в статье Новые возможности WPF для .NET 9.

Windows Forms

WinForms в .NET 9 обеспечивает поддержку новых тем, усовершенствований для асинхронной разработки и многое другое:

  • Form и TaskDialog поддерживают ShowDialogAsync. (Экспериментальная функция)
  • BinaryFormatter больше не поддерживается.
  • Экспериментальная поддержка отображения приложения в темном режиме, как это поддерживается в Windows.
  • FolderBrowserDialog и ToolStrip имели некоторые незначительные улучшения.
  • Библиотека System.Drawing имеет много улучшений, включая обёртки эффектов GDI+, поддержку ReadOnlySpanи более эффективную генерацию кода взаимодействия.

Дополнительные сведения см. в статье Новые возможности Windows Forms для .NET 9.

См. также