.NET 7 является преемником .NET 6 и фокусируется на том, чтобы быть унифицированным, современным, простым и быстрым. .NET 7 будет поддерживаться в течение 18 месяцев как выпуск стандартной поддержки (STS) (ранее известный как текущийвыпуск).
В этой статье перечислены новые возможности .NET 7 и ссылки на более подробные сведения о каждом из них.
Производительность — это ключевой фокус .NET 7, и все его функции разработаны с учетом производительности. Кроме того, .NET 7 включает следующие улучшения, направленные исключительно на производительность:
Замена на стеке (OSR) является дополнением к многоуровневой компиляции. Это позволяет среде выполнения изменять код, выполняемый текущим методом в середине его выполнения (то есть в стеке). Длительные методы могут переключаться на более оптимизированные версии в середине выполнения.
Теперь с OSR работает управляемый профилированием (PGO) и проще включить (добавив <TieredPGO>true</TieredPGO> в файл проекта). PGO также может инструментировать и оптимизировать дополнительные вещи, такие как делегаты.
Улучшено создание кода для Arm64.
Собственный AOT создает автономный исполняемый файл в формате файла целевой платформы без внешних зависимостей. Он полностью собственный, без il или JIT, и обеспечивает быстрое время запуска и небольшое автономное развертывание. В .NET 7 собственный AOT фокусируется на консольных приложениях и требует обрезки приложений.
Улучшения производительности среды выполнения Mono, которая позволяет приложениям Blazor WebAssembly, Android и iOS.
.NET 7 включает улучшения сериализации System.Text.Json в следующих областях:
Настройка контракта позволяет более контролировать сериализацию и десериализацию типов. Дополнительные сведения см. в разделе "Настройка контракта JSON".
Поддержка обязательных элементов, которые являются свойствами, которые должны присутствовать в полезных данных JSON для успешной десериализации. Дополнительные сведения см. в разделе "Обязательные свойства".
.NET 7 и C# 11 включают инновации, которые позволяют выполнять математические операции универсально, то есть не зная точного типа, с которым вы работаете. Например, если вы хотите написать метод, добавляющий два числа, ранее пришлось добавить перегрузку метода для каждого типа. Теперь можно написать один универсальный метод, где параметр типа ограничен числом типа. Дополнительные сведения см. в статье универсальной математики и записи блога универсальной математики .
Новый параметр RegexOptions.NonBacktracking позволяет сопоставить с помощью подхода, который позволяет избежать обратного отслеживания и гарантирует линейное время обработки в длину входных данных. Подсистема без обратного отслеживания не может использоваться в поиске справа налево и имеет несколько других ограничений, но быстро для всех регулярных выражений и входных данных. Дополнительные сведения см. в режиме nonbacktracking.
Генераторы источников регулярных выражений являются новыми. Генераторы источников создают подсистему, оптимизированную для шаблона во время компиляции, обеспечивая преимущества производительности пропускной способности. Источник, который выдается, является частью проекта, поэтому его можно просматривать и отлаживать. Кроме того, новые оповещения о диагностике SYSLIB1045 генератора источников, которые можно Regex преобразовать в генератор источника. Дополнительные сведения см. в разделе генераторов источников регулярных выражений .NET.
Для поиска без учета регистра .NET 7 включает большие преимущества производительности. Преимущества приходят, так как указание RegexOptions.IgnoreCase больше не вызывает ToLower каждого символа в шаблоне и для каждого символа во входных данных. Вместо этого все операции, связанные с регистром, выполняются при Regex построении.
Regex теперь поддерживает диапазоны для некоторых API. В рамках этой поддержки добавлены следующие новые методы:
В API библиотеки .NET было внесено много улучшений. Некоторые из них упоминание в других выделенных разделах этой статьи. Некоторые другие приведены в следующей таблице.
Эти API-интерфейсы означают, что вы больше не должны выполнять вычисления по значению "tick", чтобы определить микросекундные и наносекундированные значения. Дополнительные сведения см. в записи блога .NET 7 (предварительная версия 4 ).
API для чтения, записи, архивации и извлечения архивов Tar
Stream.Read может возвращать меньше данных, чем доступные в потоке. Новые ReadExactly методы считывают именно количество запрошенных байтов, а новые ReadAtLeast методы считывают по крайней мере количество запрошенных байтов. Дополнительные сведения см. в записи блога .NET 7 (предварительная версия 5 ).
Новые преобразователи типов для DateOnly, , TimeOnlyInt128и UInt128Half
Преобразователи типов часто используются для преобразования типов значений в строку и из нее. Эти новые API добавляют преобразователи типов для типов, добавленных в последнее время.
GetCurrentStatistics() позволяет использовать счетчики событий или API метрик для отслеживания статистики для одного или нескольких кэшей памяти. Дополнительные сведения см. в записи блога .NET 7 (предварительная версия 4 ).
API для получения и задания разрешений на доступ к файлам Unix
.NET 7 повышает наблюдаемость. Наблюдаемость помогает понять состояние приложения по мере масштабирования и по мере увеличения технической сложности. . Реализация наблюдаемости NET в основном основана на OpenTelemetry. Среди этих улучшений:
Новое Activity.CurrentChanged событие, которое можно использовать для обнаружения изменений контекста диапазона управляемого потока.
Пакет SDK для .NET 7 улучшает интерфейс командной строки. Она также позволяет публиковать контейнеры и централизованное управление пакетами с помощью NuGet.
Шаблоны
Некоторые улучшения приветствия были сделаны в команде dotnet new и в разработку шаблонов.
dotnet new
Команда dotnet new CLI, которая создает новый проект, файл конфигурации или решение на основе шаблона, теперь поддерживает завершение вкладки для изучения:
Доступные имена шаблонов
Параметры шаблонов
Допустимые значения параметров
Кроме того, для повышения соответствия, installuninstalllistsearchподкомандам и update субкомандам больше не имеют -- префикса.
Разработка
Ограничения шаблонов, новая концепция для .NET 7, позволяют определить контекст, в котором разрешены шаблоны. Ограничения помогают обработчику шаблонов определить шаблоны, которые должны отображаться в таких dotnet new listкомандах. Вы можете ограничить шаблон операционной системой, узел ядра шаблонов (например, диалоговое окно .NET CLI или Создать проект в Visual Studio) и установленную рабочую нагрузку. Ограничения определяются в файле конфигурации шаблона.
Кроме того, в файле конфигурации шаблона теперь можно аномировать параметр шаблона, разрешая несколько значений. Например, web шаблон позволяет использовать несколько форм проверки подлинности.
Теперь вы можете управлять общими зависимостями в проектах из одного расположения с помощью функции централизованного управления пакетами NuGet (CPM). Чтобы включить его, добавьте файл Directory.Packages.props в корневой каталог репозитория. В этом файле задайте свойство ManagePackageVersionsCentrallytrue MSBuild и добавьте версии для распространенных зависимостей пакета с помощью PackageVersion элементов. Затем в отдельных файлах проекта можно опустить Version атрибуты из любых элементов PackageReference , ссылающихся на централизованно управляемые пакеты.
.NET 7 представляет генератор источников для вызовов платформ (P/Invokes) в C#. Генератор источника ищет LibraryImportAttributestaticpartial методы для активации создания исходного кода маршаллинга во время компиляции. Создавая код маршаллинга во время компиляции, заглушка IL не должна создаваться во время выполнения, так как она выполняется при использовании DllImportAttribute. Генератор источников повышает производительность приложения, а также позволяет приложению заранее скомпилировать (AOT). Дополнительные сведения см. в разделе "Создание источника" для вызовов платформ и использование пользовательских маршаллеров в созданных источником P/Invokes.
Связанные выпуски
В этом разделе содержатся сведения о связанных продуктах, которые имеют выпуски, совпадающие с выпуском .NET 7.
F# 7 продолжает работу, чтобы упростить язык и повысить производительность и взаимодействие с новыми функциями C#. Дополнительные сведения см. в разделе "Объявление F# 7".
.NET MAUI
NET Multi-Platform App UI (.NET MAUI) — это кросс-платформенная платформа для создания собственных мобильных и классических приложений с помощью C# и XAML. Он объединяет API Android, iOS, macOS и Windows в один API. Сведения о последних обновлениях см. в статье "Новые возможности.NET MAUI для .NET 7".
ASP.NET Core
ASP.NET Core 7.0 включает по промежуточному слоям, усовершенствованиям минимальных API и транскодирования JSON gRPC. Сведения обо всех обновлениях см. в статье "Новые возможности" ASP.NET Core 7.
EF Core
Entity Framework Core 7.0 включает поддержку столбцов JSON, улучшенную производительность для сохранения изменений и пользовательских шаблонов обратного проектирования. Сведения обо всех обновлениях см. в статье "Новые возможности EF Core 7.0".
Windows Forms
Много работы прошло в Windows Forms для .NET 7. Усовершенствования были сделаны в следующих областях:
WPF в .NET 7 включает множество исправлений ошибок, а также улучшения производительности и специальных возможностей. Дополнительные сведения см. в записи блога о новых возможностях WPF в .NET 7 .
Orleans
Orleans — это кроссплатформенная платформа для создания надежных масштабируемых распределенных приложений. Сведения о последних обновлениях Orleansсм. в разделе "Миграция с Orleans 3.x на 7.0".
ML.NET теперь включает API классификации текста, который упрощает обучение пользовательских моделей классификации текста с помощью новейших методов глубокого обучения. Дополнительные сведения см. в статье "Новые возможности autoML и инструментов" и "Введение в записи блога API классификации текста ML.NET".
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Из этого модуля вы узнаете, в каких случаях, с какой целью и каким образом следует модернизировать приложение ASP.NET Framework до ASP.NET Core с помощью помощника по обновлению.