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


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

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

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

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

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

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

ASP.NET Core

Заголовок Тип изменения
ConcurrencyLimiterMiddleware устарел Несовместимый источник
Пользовательские преобразователи для сериализации удалены изменение поведения;
ISystemClock устарел Несовместимый источник
Минимальные API: параметры IFormFile требуют проверки защиты от подделки изменение поведения;
Для по промежуточного слоя с ограничением скорости требуется AddRateLimiter изменение поведения;
События маркера безопасности возвращают JsonWebToken изменение поведения;
По умолчанию TrimMode заполнено для проектов веб-пакета SDK Несовместимый источник

Контейнеры

Заголовок Тип изменения
Пакет ca-certificates удален из образов Alpine Несовместимый двоичный файл
Образы контейнеров Debian обновлены до Debian 12 Двоичные несовместимые или поведенческие изменения
По умолчанию порт ASP.NET Core изменен на 8080 изменение поведения;
Пакет Kerberos удален из образов Alpine и Debian Несовместимый двоичный файл
Пакет libintl удален из образов Alpine изменение поведения;
Теги контейнеров с несколькими платформами доступны только для Linux изменение поведения;
Новый пользователь app в образах Linux изменение поведения;

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

Заголовок Тип изменения
Имя операции действия при значении NULL изменение поведения;
Поведение AnonymousPipeServerStream.Dispose изменение поведения;
Обзоление API с пользовательскими идентификаторами диагностики Несовместимый источник
Сопоставление обратной косой черты в путях к файлам Unix изменение поведения;
Методы Base64.DecodeFromUtf8 игнорируют пробелы изменение поведения;
Поддержка логического перечисления, поддерживаемого логическим типом перечисления изменение поведения;
Формат Complex.ToString изменен на <a; b> изменение поведения;
Перечисление текущего пути к каталогу диска изменение поведения;
Enumerable.Sum создает новый Метод OverflowException для некоторых входных данных изменение поведения;
FileStream записывает данные при закрытии канала изменение поведения;
FindSystemTimeZoneById не возвращает новый объект изменение поведения;
GC. GetGeneration может возвращать Int32.MaxValue изменение поведения;
Поведение GetFolderPath в Unix изменение поведения;
GetSystemVersion больше не возвращает ImageRuntimeVersion изменение поведения;
Заметки iTypeDescriptorContext NULL Несовместимый источник
Устаревшая консоль.ReadKey удалена изменение поведения;
Построитель методов создает параметры с параметром HasDefaultValue, равным false изменение поведения;
ProcessStartInfo.WindowStyle учитывается, если UseShellExecute имеет значение false изменение поведения;
RuntimeIdentifier возвращает платформу, для которой была создана среда выполнения изменение поведения;
Type.GetType Создает исключение для всех недопустимых типов элементов изменение поведения;

Шифрование

Заголовок Тип изменения Введенный
Размер тега проверки подлинности AesGcm в macOS изменение поведения; Предварительная версия 1
RSA. EncryptValue и RSA. Устаревший decryptValue Несовместимый источник Предварительная версия 1

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

Заголовок Тип изменения
Узел определяет ресурсы, относящиеся к RID Двоичные несовместимые или поведенческие изменения
Монитор .NET включает только бесконтрольные образы изменение поведения;
По умолчанию stripSymbols имеет значение true изменение поведения;

Entity Framework Core

Критические изменения в EF Core 8

Расширения

Заголовок Тип изменения
АктивацияUtilities.CreateInstance работает согласованно изменение поведения;
Для активацииutilities.CreateInstance требуется поставщик, отличный от NULL изменение поведения;
ConfigurationBinder вызывает несовпадение значения изменение поведения;
Пакет ConfigurationManager больше не ссылается на System.Security.Permissions Несовместимый источник
Пакет DirectoryServices больше не ссылается на System.Security.Permissions Несовместимый источник
Пустые ключи, добавленные в словарь по привязке конфигурации изменение поведения;
HostApplicationBuilderSettings.Args, уважаемый ctor HostApplicationBuilder изменение поведения;
ManagementDateTimeConverter.ToDateTime возвращает локальное время изменение поведения;
Изменение форматирования System.Format.Cbor DateTimeOffset изменение поведения;

Глобализация

Заголовок Тип изменения
Преобразователи даты и времени учитывают аргумент языка и региональных параметров изменение поведения;
Значение по умолчанию TwoDigitYearMax — 2049 изменение поведения;

Interop

Заголовок Тип изменения
CreateObjectFlags.Unwrap только распаковывается в целевом экземпляре изменение поведения;
Пользовательские маршаллеры требуют дополнительных элементов Несовместимый источник
API IDispatchImplAttribute удален Несовместимый двоичный файл
Неявный открытый конструктор по умолчанию JSFunctionBinding удален Несовместимый двоичный файл
Типы SafeHandle должны иметь открытый конструктор Несовместимый источник

Сеть

Заголовок Тип изменения
SendFile создает исключение NotSupportedException для сокетов без подключения изменение поведения;
Данные пользователя в mailto: URI сравниваются изменение поведения;

Отражение

Заголовок Тип изменения
IntPtr больше не используется для типов указателей функций изменение поведения;

SDK

Заголовок Тип изменения
Выходные данные консоли CLI используют UTF-8 Изменение поведения/ несовместимость исходного и двоичного файла
Кодировка консоли не UTF-8 после завершения Изменение поведения или несовместимое двоичное
Контейнеры по умолчанию используют тег "latest" изменение поведения;
"dotnet pack" использует конфигурацию выпуска Изменение поведения или несовместимое источник
"dotnet publish" использует конфигурацию выпуска Изменение поведения или несовместимое источник
Повторяющиеся выходные данные для -getItem, -getProperty и -getTargetResult изменение поведения;
Неявное using для System.Net.Http больше не добавлено Изменение поведения или несовместимое источник
Пользовательские события сборки, производные от MSBuild, устарели изменение поведения;
MSBuild учитывает DOTNET_CLI_UI_LANGUAGE изменение поведения;
Приложения, зависящие от среды выполнения, не автономные Несовместимый источник или двоичный файл
Параметр --arch не означает автономное изменение поведения;
"dotnet restore" создает предупреждения об уязвимостях безопасности изменение поведения;
Пакет SDK использует меньший граф RID Изменение поведения или несовместимое источник
Настройка debugSymbols значение false отключает создание PDB изменение поведения;
Ссылка на источник, включенная в пакет SDK для .NET Несовместимый источник
Обрезка не может использоваться с .NET Standard или платформа .NET Framework изменение поведения;
Неподписанные пакеты, не установленные по умолчанию для средств .NET изменение поведения;
Пользовательский файл, импортированный во внешних сборках изменение поведения;
Требования к версии пакета SDK для .NET 8 Несовместимый источник

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

Заголовок Тип изменения
BinaryFormatter отключен для большинства проектов изменение поведения;
Сбой сериализации на основе отражения в проектах PublishedTrimmed изменение поведения;
Десериализатор на основе отражения разрешает метаданные с нетерпением изменение поведения;

Windows Forms

Заголовок Тип изменения
Изменения макета привязки изменение поведения;
Сертификаты, проверенные перед загрузкой удаленных образов в PictureBox изменение поведения;
DateTimePicker.Text — пустая строка изменение поведения;
Свойство DefaultValueAttribute удалено из некоторых свойств изменение поведения;
ИсключениеCollection ctor вызывает АргументException изменение поведения;
Масштаб форм в соответствии с AutoScaleMode изменение поведения;
ImageList.ColorDepth по умолчанию — Depth32Bit изменение поведения;
System.Windows.Extensions не ссылается на System.Drawing.Common Несовместимый источник
TableLayoutStyleCollection вызывает АргументException изменение поведения;
Минимальный и максимальный размер форм верхнего уровня до DPI изменение поведения;
WFDEV002 obsoletion теперь является ошибкой Несовместимый источник

См. также