Критические изменения в .NET 5
При переносе приложения на платформу .NET 5 описанные здесь критические изменения могут повлиять на работу приложения. Изменения сгруппированы по технологическим областям, например ASP.NET Core или криптография.
В этой статье указывается, совместим ли каждое критическое изменение с двоичным кодом или совместимо с источником:
- Двоичная совместимость . Существующие двоичные файлы будут загружаться и выполняться успешно без повторной компиляции, а поведение во время выполнения не изменится.
- Совместимость с исходным кодом. Исходный код успешно компилируется без изменений при нацеливание на новую среду выполнения или использование нового пакета SDK или компонента.
ASP.NET Core
Анализ кода
Заголовок | Совместимость на уровне двоичных файлов | Совместимость на уровне исходного кода |
---|---|---|
Предупреждение CA1416 | ✔️ | ❌ |
Предупреждение CA1417 | ✔️ | ❌ |
Предупреждение CA1831 | ✔️ | ❌ |
Предупреждение CA2013 | ✔️ | ❌ |
Предупреждение CA2014 | ✔️ | ❌ |
Предупреждение CA2015 | ✔️ | ❌ |
Предупреждение CA2200 | ✔️ | ❌ |
Предупреждение CA2247 | ✔️ | ❌ |
Основные библиотеки .NET
Шифрование
Заголовок | Совместимость на уровне двоичных файлов | Совместимость на уровне исходного кода |
---|---|---|
API-интерфейсы шифрования не поддерживаются в браузере | ❌ | ✔️ |
Криптография.Oid доступна только для инициализации | ✔️ | ❌ |
Наборы шифров TLS по умолчанию в Linux | ❌ | ✔️ |
Перегрузки Create() для криптографических абстракций устарели | ✔️ | ❌ |
Изменено значение FeedbackSize по умолчанию | ✔️ | ❌ |
Entity Framework Core
Критические изменения в EF Core 5.0
Глобализация
Заголовок | Совместимость на уровне двоичных файлов | Совместимость на уровне исходного кода |
---|---|---|
Использование библиотек ICU в Windows | ❌ | ✔️ |
StringInfo и TextElementEnumerator совместимы с UAX29 | ❌ | ✔️ |
Категория Юникода изменена для символов Latin-1 | ✔️ | ❌ |
Изменены значения TextInfo.ListSeparator | ✔️ | ❌ |
Interop
Заголовок | Совместимость на уровне двоичных файлов | Совместимость на уровне исходного кода |
---|---|---|
Поддержка WinRT удалена | ❌ | ✔️ |
Приведение RCW к InterfaceIsIInspectable вызывает исключение | ❌ | ✔️ |
Отсутствует проверка суффикса A/W на платформах, отличных от Windows | ❌ | ✔️ |
Сеть
Заголовок | Совместимость на уровне двоичных файлов | Совместимость на уровне исходного кода |
---|---|---|
Обработка пути файлов cookie соответствует RFC 6265 | ✔️ | ❌ |
LocalEndPoint обновляется после вызова SendToAsync | ✔️ | ❌ |
MulticastOption.Group не принимает значение NULL | ✔️ | ❌ |
Потоки разрешить последовательные операции Begin | ❌ | ✔️ |
Класс WinHttpHandler удален из среды выполнения .NET | ❌ | ✔️ |
SDK
Заголовок | Совместимость на уровне двоичных файлов | Совместимость на уровне исходного кода |
---|---|---|
Файлы Directory.Packages.props, импортированные по умолчанию | ❌ | ✔️ |
Ошибка возникает, когда исполняемый проект ссылается на несоответствующий исполняемый файл | ✔️ | |
Элемент FrameworkReference заменен на WindowsSdkPackageVersion для Windows SDK | ✔️ | ❌ |
символ препроцессора NETCOREAPP3_1 не определен | ✔️ | ❌ |
OutputType имеет значение WinExe | ❌ | ✔️ |
Изменение поведения PublishDepsFilePath | ❌ | ✔️ |
Значение TargetFramework изменено с netcoreapp на net | ❌ | ✔️ |
В приложениях WinForms и WPF используется Microsoft.NET.Sdk | ❌ | ✔️ |
Безопасность
Заголовок | Совместимость на уровне двоичных файлов | Совместимость на уровне исходного кода |
---|---|---|
API безопасности доступа к коду устарели | ✔️ | ❌ |
PrincipalPermissionAttribute устарел | ✔️ | ❌ |
Пути к коду в кодировке UTF-7 устарели | ✔️ | ❌ |
Сериализация
Заголовок | Совместимость на уровне двоичных файлов | Совместимость на уровне исходного кода |
---|---|---|
Исключения BinaryFormatter.Deserialize rewraps | ✔️ | ❌ |
Для JsonSerializer.Deserialize требуется строка из одного символа | ✔️ | ❌ |
ASP.NET основные приложения десериализации кавычек | ✔️ | ❌ |
JsonSerializer.Serialize создает исключение ArgumentNullException | ✔️ | ❌ |
Не являющиеся открытыми конструкторы без параметров не используются для десериализации | ✔️ | ❌ |
Параметры учитываются при сериализации пар "ключ-значение" | ✔️ | ❌ |
Windows Forms
Заголовок | Совместимость на уровне двоичных файлов | Совместимость на уровне исходного кода |
---|---|---|
Машинный код не может получить доступ к объектам Windows Forms | ✔️ | ❌ |
OutputType имеет значение WinExe | ❌ | ✔️ |
DataGridView не сбрасывает пользовательские шрифты | ✔️ | ❌ |
Методы вызывают ArgumentException | ✔️ | ❌ |
Методы вызывают ArgumentNullException | ✔️ | ❌ |
Свойства вызывают АргументOutOfRangeException | ✔️ | ❌ |
Флаг TextFormatFlags.ModifyString является устаревшим | ✔️ | ❌ |
API DataGridView вызывают InvalidOperationException | ✔️ | ❌ |
Приложения WinForms используют Microsoft.NET.Sdk | ❌ | ✔️ |
Удалены элементы управления строкой состояния | ✔️ | ❌ |
WPF
Заголовок | Совместимость на уровне двоичных файлов | Совместимость на уровне исходного кода |
---|---|---|
OutputType имеет значение WinExe | ❌ | ✔️ |
Приложения WPF используют Microsoft.NET.Sdk | ❌ | ✔️ |
См. также
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.