Бөлісу құралы:


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

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

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

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

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

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

ASP.NET Core

См. критические изменения в ASP.NET Core 9.

Контейнеры

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

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

Заголовок Тип изменения Представленная версия
Добавление элемента ZipArchiveEntry с уровнем сжатия задаёт основные флаги битов заголовка центрального каталога ZIP изменение поведения; Предварительная версия 5
Изменена поддержка UnsafeAccessor для неоткрытых универсальных типов изменение поведения; Пробная версия 6
Устаревание API с настраиваемыми диагностическими идентификаторами Несовместимый источник (Несколько)
неоднозначное разрешение перегрузки, влияющее на неявные операторы StringValues Несовместимый источник Общедоступная версия
Максимальная длина bigInteger изменение поведения; Пробная версия 6
BinaryReader.ReadString() возвращает значение "\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 Несовместимый источник Предварительная версия 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
Переменные среды имеют приоритет в параметрах конфигурации среды выполнения приложения изменение поведения; Общедоступная версия

Entity Framework Core

См. критические изменения в EF Core 9.

Интероперабельность

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

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

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

Сеть

Заголовок Тип изменения Представленная версия
Отчет о метриках 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 Версия репозитория больше не документирована изменение поведения; Предварительная версия 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 (предварительная версия)

См. также