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


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

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

В этой статье указывается, является ли каждое критическое изменение бинарно совместимым или совместимым на уровне кода.

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

ASP.NET Core

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

Анализ кода

Название Бинарная совместимость Совместимость с исходным кодом
Предупреждение CA1416 ✔️
Предупреждение CA1417 ✔️
Предупреждение CA1831 ✔️
Предупреждение CA2013 ✔️
Предупреждение CA2014 ✔️
Предупреждение CA2015 ✔️
Предупреждение CA2200 ✔️
Предупреждение CA2247 ✔️

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

Название Бинарная совместимость Совместимость с исходным кодом
Изменения API, связанные с публикацией единого файла ✔️
Методы сериализации BinaryFormatter устарели ✔️
API безопасности доступа к коду устарели ✔️
CreateCounterSetInstance создает исключение InvalidOperationException ✔️
ActivityIdFormat по умолчанию — W3C ✔️
Environment.OSVersion возвращает правильную версию ✔️
Значение FrameworkDescription равно «.NET», а не «.NET Core» ✔️
API GAC устарели ✔️
Встроенные аппаратные проверки IsSupported ✔️
IntPtr и UIntPtr реализуют IFormattable ✔️
LastIndexOf обрабатывает пустые строки поиска ✔️
Пути URI с символами, отличными от ASCII в Unix ✔️
Устаревание API с нестандартными диагностическими идентификаторами ✔️
Устаревшие свойства в ConsoleLoggerOptions ✔️
Сложность LINQ OrderBy.First ✔️
Атрибуты OSPlatform переименованы или удалены ✔️
Удален пакет Microsoft.DotNet.PlatformAbstractions ✔️
PrincipalPermissionAttribute устарел ✔️
Изменения имени параметра из предварительных версий ✔️
Изменения имени параметра в эталонных сборках ✔️
Интерфейсы API удаленного взаимодействия устарели ✔️
Порядок списка Activity.Tags изменён на обратный ✔️
Методы сравнения SSE и SSE2 обрабатывают NaN ✔️
Thread.Abort устарел ✔️
Распознавание URI путей UNC в Unix ✔️
Пути кода UTF-7 устарели ✔️
Изменение поведения для Vector2.Lerp и Vector4.Lerp ✔️
Vector<T> создает исключение NotSupportedException ✔️

Криптография

Название Бинарная совместимость Совместимость с исходным кодом
API-интерфейсы шифрования не поддерживаются в браузере ✔️
Cryptography.Oid доступен только для инициализации ✔️
Наборы шифров TLS по умолчанию в Linux ✔️
Перегрузки Create() для криптографических абстракций устарели ✔️
Изменено значение FeedbackSize по умолчанию ✔️

Entity Framework Core (платформа для работы с базами данных)

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

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

Название Бинарная совместимость Совместимость с исходным кодом
Использование библиотек ICU в Windows ✔️
StringInfo и TextElementEnumerator совместимы с UAX29 ✔️
Категория Юникода изменена для символов Latin-1 ✔️
Изменены значения TextInfo.ListSeparator ✔️

Взаимодействие

Название Бинарная совместимость Совместимость с исходным кодом
Поддержка WinRT удалена ✔️
Приведение RCW к InterfaceIsIInspectable вызывает исключение ✔️
Отсутствует проверка суффиксов A/W на платформах, отличных от Windows ✔️

Нетворкинг

Название Бинарная совместимость Совместимость с исходным кодом
Обработка пути файлов cookie соответствует RFC 6265 ✔️
LocalEndPoint обновляется после вызова SendToAsync ✔️
MulticastOption.Group не принимает значение NULL ✔️
Потоки позволяют последовательное выполнение операций Begin ✔️
WinHttpHandler удален из среды выполнения .NET ✔️

Пакет SDK

Название Бинарная совместимость Совместимость с исходным кодом
Файлы Directory.Packages.props, импортированные по умолчанию ✔️
Ошибка, возникаемая при ссылках на исполняемый проект несоответветным исполняемым файлам ✔️
FrameworkReference заменен на WindowsSdkPackageVersion для Пакета SDK Windows ✔️
символ препроцессора NETCOREAPP3_1 не определен ✔️
OutputType установлен как WinExe ✔️
Изменение поведения PublishDepsFilePath ✔️
TargetFramework изменится с netcoreapp на net ✔️
Приложения WinForms и WPF используют Microsoft.NET.Sdk ✔️

Безопасность

Название Бинарная совместимость Совместимость с исходным кодом
API безопасности доступа к коду устарели ✔️
PrincipalPermissionAttribute устарел ✔️
Пути кода UTF-7 устарели ✔️

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

Название Бинарная совместимость Совместимость с исходным кодом
Метод BinaryFormatter.Deserialize повторно обрабатывает исключения ✔️
JsonSerializer.Deserialize требует строки из одного символа ✔️
Приложения ASP.NET Core десериализуют числа в кавычках ✔️
JsonSerializer.Serialize создает исключение ArgumentNullException ✔️
Недоступные конструкторы без параметров, не используемые для десериализации ✔️
Параметры учитываются при сериализации пар ключ-значение ✔️

Windows Forms

Название Бинарная совместимость Совместимость с исходным кодом
Машинный код не может получить доступ к объектам Windows Forms ✔️
OutputType установлен как WinExe ✔️
DataGridView не сбрасывает пользовательские шрифты ✔️
Методы вызывают ArgumentException ✔️
Методы вызывают ArgumentNullException ✔️
Свойства вызывают ArgumentOutOfRangeException ✔️
TextFormatFlags.ModifyString устарел ✔️
API DataGridView выбрасывают InvalidOperationException ✔️
Приложения WinForms используют Microsoft.NET.Sdk ✔️
Удалены элементы управления строкой состояния ✔️

WPF (Windows Presentation Foundation)

Название Бинарная совместимость Совместимость с исходным кодом
OutputType установлен как WinExe ✔️
Приложения WPF используют Microsoft.NET.Sdk ✔️

См. также