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

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

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

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

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

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

ASP.NET Core

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

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

Заголовок Тип изменения
Обзоления API с идентификатором диагностики по умолчанию Несовместимый источник
Устаревшие API с отличными от заданных по умолчанию идентификаторами диагностики Несовместимый источник
звездочка больше не принимается для атрибутов имени сборки Изменение поведения
API сериализации BinaryFormatter создают ошибки компилятора Несовместимый источник
BrotliStream больше не разрешает неопределенные значения CompressionLevel Бинарно несовместимый
Проекты C++/CLI в Visual Studio Несовместимый источник
Изменения, внесенные в отражение, вызывают исключения API Бинарно несовместимый
Сборная сборки в неубираемой сборке AssemblyLoadContext Бинарно несовместимый
Изменение точности методов добавления DateTime Изменение поведения
Изменение поведения метода Equals для NaN Бинарно несовместимый
Поведение обратного вызова EventSource Изменение поведения
Ограничение универсального типа для PatternContext<T> Несовместимый двоичный или исходный код
Устаревшая стратегия FileStream удалена Бинарно несовместимый
Поддержка библиотек для старых платформ Несовместимый двоичный или исходный код
Максимальная точность для строк числового формата Бинарно несовместимый
Шаблоны регулярных выражений с исправленными диапазонами Изменение поведения
SerializationFormat.Binary устарел Несовместимый двоичный или исходный код
Удален параметр конфигурации System.Drawing.Common Изменение поведения
Пакет NuGet System.Runtime.CompilerServices.Unsafe Изменение поведения
Поля времени для символьных ссылок Бинарно несовместимый
Отслеживание записей связанного кэша Бинарно несовместимый
Проверка CompressionLevel для BrotliStream Бинарно несовместимый

Настройка

Заголовок Тип изменения
Система. диагностика запись в app.config Бинарно несовместимый

Шифрование

Заголовок Тип изменения
Расшифровка EnvelopedCms не выполняет двойной распаковки Бинарно несовместимый
Время проверки Dynamic X509ChainPolicy Бинарно несовместимый
Синтаксический анализ X500DistinguishedName с понятными именами Бинарно несовместимый

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

Заголовок Тип изменения
Все сборки, обрезанные по умолчанию Несовместимый источник
Многоуровневый поиск отключен Бинарно несовместимый
Путь к 64-разрядному узлу x86 в Windows Изменение поведения
TrimmerDefaultAction не рекомендуется Несовместимый источник

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

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

Расширения

Заголовок Тип изменения
Конфигурация привязки к словарю расширяет значения Изменение поведения
ContentRootPath для приложений, запущенных оболочкой Windows Бинарно несовместимый
Префиксы переменной среды Бинарно несовместимый

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

Заголовок Тип изменения
API глобализации используют библиотеки ICU в Windows Server Бинарно несовместимый

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

Заголовок Тип изменения
RuntimeInformation.OSArchitecture под эмуляцией Бинарно несовместимый

.NET MAUI

Заголовок Тип изменения
Конструкторы принимают базовый интерфейс вместо конкретного типа Бинарно несовместимый
Удаленные вспомогательные методы направления потока Несовместимый двоичный или исходный код
Новый параметр UpdateBackground Бинарно несовместимый
Свойство ScrollToRequest переименовано Несовместимый двоичный или исходный код
Некоторые API Windows удаляются Несовместимый двоичный или исходный код

Сеть

Заголовок Тип изменения
Значение по умолчанию AllowRenegotiation равно false Несовместимый двоичный или исходный код
Пользовательские полезные данные ping в Linux Бинарно несовместимый
Методы Socket.End не вызывают ObjectDisposedException Бинарно несовместимый

SDK и MSBuild

Заголовок Тип изменения
Автоматическое средство RuntimeIdentifier только для публикации Несовместимый двоичный или исходный код
Выходные данные консоли CLI используют UTF-8 Несовместимый двоичный или исходный код
Кодировка консоли не UTF-8 после завершения Бинарно несовместимый
Сериализация MSBuild пользовательских типов в .NET 7 Несовместимый двоичный или исходный код
Параллельные установки пакета SDK Несовместимый двоичный или исходный код
Манифесты инструментов в корневой папке Изменение поведения
Требования к версии пакета SDK для .NET 7 Изменение поведения
dotnet test: переключение -a на псевдоним --arch вместо --test-adapter-path Несовместимый двоичный или исходный код
dotnet test: переключение -r на псевдоним --runtime вместо --results-dir Несовместимый двоичный или исходный код
--output Параметр больше не действителен для команд уровня решения Несовместимый двоичный или исходный код
Пакет SDK больше не вызывает ResolvePackageDependencies Несовместимый источник

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

Заголовок Тип изменения
DataContractSerializer сохраняет знак при десериализации -0 Бинарно несовместимый
Десериализация типа версии с начальным или конечным пробелами Бинарно несовместимый
Конструктор копирования JsonSerializerOptions включает JsonSerializerContext Бинарно несовместимый
Полиморфная сериализация для типов объектов Бинарно несовместимый
Резервный вариант генератора источника System.Text.Json Бинарно несовместимый

Windows Forms

Заголовок Тип изменения
Обсоления и предупреждения Несовместимый источник
Некоторые API создают исключение ArgumentNullException Бинарно несовместимый

WPF (Windows Presentation Foundation)

Заголовок Тип изменения
Восстановленное поведение операций перетаскивания в текстовых редакторах Изменение поведения

XML и XSLT

Заголовок Тип изменения
XmlSecureResolver устарел Несовместимый двоичный или исходный код

См. также