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


Критические изменения в .NET 9

Если вы переносите приложение на .NET 9, критические изменения, перечисленные здесь, могут повлиять на вас. Изменения сгруппированы по технологическим областям, например, ASP.NET Core или Windows Forms.

Эта статья классифицирует каждое критическое изменение как двоично несовместимое или по исходному коду несовместимое, или как изменение в поведении:

  • Бинарная несовместимость - При запуске в новой среде выполнения или с новым компонентом существующие двоичные файлы могут столкнуться с критическим изменением в поведении, например, сбоем при загрузке или выполнении, и тогда может потребоваться их повторная компиляция.

  • Несовместимый источник. При повторной компиляции с помощью нового пакета SDK или компонента или целевой среды выполнения существующий исходный код может требовать изменения источника для успешной компиляции.

  • Изменение поведения. Существующий код и двоичные файлы могут вести себя по-разному во время выполнения. Если новое поведение нежелательно, необходимо обновить и перекомпилировать существующий код.

Примечание.

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

ASP.NET Core

Заголовок Тип изменения Представленная версия
Значение DefaultKeyResolution.ShouldGenerateNewKey изменилось изменение поведения; 3 (предварительная версия)
Экспорт сертификата разработки больше не создает папку изменение поведения; Релиз-кандидат 1
HostBuilder включает ValidateOnBuild/ValidateScopes в среде разработки изменение поведения; Предварительная версия 7
устаревшие API Mono и Emscripten не экспортируются в глобальное пространство имен Несовместимый источник Общедоступная версия
Типы ПО промежуточного слоя с несколькими конструкторами изменение поведения; Релиз-кандидат 1

Контейнеры

Заголовок Тип изменения Представленная версия
Образы контейнеров больше не содержат zlib изменение поведения; Предварительная версия 7
изображения .NET Monitor упрощены до тегов, содержащих только версию изменение поведения; Preview 5

Основные библиотеки .NET

Заголовок Тип изменения Представленная версия
Добавление элемента ZipArchiveEntry с уровнем сжатия задаёт основные флаги битов заголовка центрального каталога ZIP изменение поведения; Preview 5
Изменена поддержка UnsafeAccessor для неоткрытых универсальных типов изменение поведения; Пробная версия 6
Устаревание API с настраиваемыми диагностическими идентификаторами Несовместимый источник (Несколько)
неоднозначное разрешение перегрузки, влияющее на неявные операторы StringValues Несовместимый источник Общедоступность
Максимальная длина bigInteger изменение поведения; Пробная версия 6
BinaryReader.GetString() возвращает значение "\uFFFD" в неправильно сформированных последовательностях изменение поведения; Предварительная версия 7
резольвер перегрузки C# предпочитает params перегрузки типа Span Несовместимый источник
Создание массива типа System.Void не допускается изменение поведения; Предварительная версия 1
Значение по умолчанию Equals() и GetHashCode() генерируют исключение для типов, помеченных как InlineArrayAttribute изменение поведения; Пробная версия 6
EnumConverter проверяет, что зарегистрированные типы являются перечислениями изменение поведения; Предварительная версия 7
FromKeyedServicesAttribute больше не вводит неключимый параметр изменение поведения; Релиз-кандидат 1
Начальный обратный вызов IncrementingPollingCounter является асинхронным изменение поведения; Релиз-кандидат 1
Ограничение размера структуры встроенного массива применяется изменение поведения; Предварительная версия 1
InMemoryDirectoryInfo добавляет rootDir к файлам изменение поведения; Предварительная версия 1
Новые перегрузки TimeSpan.From*(), принимающие целочисленные значения Несовместимый источник 3 (предварительная версия)
Новая версия некоторых пакетов OOB Несовместимый источник Preview 5
RuntimeHelpers.GetSubArray возвращает другой тип изменение поведения; Предварительная версия 1
Удалена перегрузка String.Trim(params ReadOnlySpan<char>) Несовместимость на уровне исходного кода/двоичного кода Общедоступная версия
Поддержка пустых переменных среды изменение поведения; Пробная версия 6
Имена и комментарии ZipArchiveEntry уважают флаг UTF8 изменение поведения; Релиз-кандидат 1

Шифрование

Заголовок Тип изменения Представленная версия
API удалены из System.Security.Cryptography.Pkcs netstandard2.0 Несовместимый источник Общедоступная версия
SafeEvpPKeyHandle.DuplicateHandle увеличивает счетчик ссылок обработчика изменение поведения; Предварительная версия 7
Некоторые конструкторы X509Certificate2 и X509Certificate устарели Несовместимый источник Предварительная версия 7
Упрощенное время существования закрытого ключа Windows изменение поведения; Предварительная версия 7

Развертывание

Заголовок Тип изменения Представленная версия
Устаревшие пакеты среды выполнения Windows/macOS/Linux MonoVM Несовместимый источник Предварительная версия 7
Каталог загрузки сборки определяется через символьные ссылки в Windows изменение поведения; Общедоступная версия

Interop

Заголовок Тип изменения Представленная версия
CET поддерживается по умолчанию Несовместимый двоичный код Пробная версия 6

JIT-компилятор

Заголовок Тип изменения Представленная версия
Преобразования из чисел с плавающей точкой в целые числа являются насыщенными изменение поведения; Предварительная версия 4
Некоторые API SVE удалены Несовместимый источник RC 2

Сеть

Заголовок Тип изменения Представленная версия
Устаревание API Несовместимый источник Пробная версия 6
Отчет о метриках HttpClient server.port безоговорочно изменение поведения; Предварительная версия 7
Журналирование HttpClientFactory по умолчанию скрывает значения заголовков изменение поведения; Релиз-кандидат 1
HttpClientFactory использует SocketsHttpHandler в качестве основного обработчика изменение поведения; Пробная версия 6
HttpListenerRequest.UserAgent имеет значение NULL Несовместимый источник Предварительная версия 1
Редактирование запросов URI для событий HttpClient EventSource изменение поведения; Предварительная версия 7
Редактирование запроса URI в логах IHttpClientFactory изменение поведения; Предварительная версия 7

SDK и MSBuild

Заголовок Тип изменения Представленная версия
dotnet sln add не разрешает недопустимые имена файлов изменение поведения; 9.0.2xx
dotnet watchнесовместимый с горячей перезагрузкой для старых фреймворков изменение поведения; Релиз-кандидат 1
dotnet workload Команды изменяют выходные данные изменение поведения; Предварительная версия 1
installer Версия репозитория больше не документирована изменение поведения; Preview 5
Обработка ресурсов пользовательского языка и региональных параметров MSBuild изменение поведения; 9.0.200/9.0.300
Новый RID по умолчанию используется при таргетировании .NET Framework Несовместимый источник Общедоступная версия
Логгер терминала используется по умолчанию изменение поведения; Предварительная версия 1
Требования к версии пакета SDK для .NET 9 Несовместимый источник Общедоступная версия
Предупреждение, выдаваемое для целевого объекта .NET Standard 1.x Несовместимый источник Пробная версия 6
Предупреждение, выдаваемое для целевого объекта .NET 7 Несовместимый источник Общедоступная версия

Сериализация

Заголовок Тип изменения Представленная версия
BinaryFormatter всегда вызывает изменение поведения; Пробная версия 6
свойства JsonDocument, допускающие значение NULL, десериализуются в JsonValueKind.Null изменение поведения; Предварительная версия 1
средство чтения метаданных System.Text.Json теперь не использует имена свойств метаданных изменение поведения; Общедоступная версия

Windows Forms

Заголовок Тип изменения Представленная версия
BindingSource.SortDescriptions не возвращает значение NULL изменение поведения; Предварительная версия 1
Изменения аннотаций nullability Несовместимый источник Предварительная версия 1
ComponentDesigner.Initialize создает исключение ArgumentNullException изменение поведения; Предварительная версия 1
DataGridViewRowAccessibleObject.Name начальный индекс строки изменение поведения; Предварительная версия 1
Поддержка IMsoComponent включена изменение поведения; Предварительная версия 2
Новые анализаторы безопасности Несовместимый источник Релиз-кандидат 1
Нет исключения, если DataGridView равно null изменение поведения; Предварительная версия 1
PictureBox вызывает исключения HttpClient изменение поведения; Пробная версия 6
StatusStrip использует другой рендерер по умолчанию изменение поведения; Общедоступная версия

WPF (Windows Presentation Foundation)

Заголовок Тип изменения Представленная версия
GetXmlNamespaceMaps Изменение типа Изменение поведения/Несовместимый источник 3 (предварительная версия)

См. также