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

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

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

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

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

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

Замечание

Эта статья находится в процессе написания. Это не полный список критических изменений в .NET 11.

ASP.NET Core

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

Containers

Название Тип изменения
Для dotnet test в контейнерах требуется записываемый базовый каталог артефактов VSTest Изменение поведения

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

Название Тип изменения
Поведение Assembly.GetCallingAssembly изменяется при отключении поддержки трассировки стека Изменение поведения
CborReader и CborWriter применяют максимальную глубину вложения по умолчанию Изменение поведения
Сложные результаты специальных значений теперь соответствуют Приложению G стандарта C23 Изменение поведения
При чтении записей ZIP-архива добавлена проверка CRC32 Изменение поведения
Методы TryParse DateOnly и TimeOnly вызывают исключение при недопустимых входных данных Изменение поведения
Преобразования Decimal и BigInteger в числа с плавающей запятой правильно округляются Изменение поведения
DeflateStream и GZipStream записывают заголовки и концевики для пустого содержимого Изменение поведения
Environment.GetCommandLineArgs()[0] сохраняет имя вызова apphost Изменение поведения
Environment.TickCount приведён в соответствие с поведением тайм-аутов Windows Изменение поведения
Созданные коллекции WMI и оболочки перечислителя WMI реализуют IDisposable Изменение источника/поведения
Math.Round и MathF.Round возвращают правильно округленные результаты Изменение поведения
Именованные мьютексы по умолчанию имеют область пользователя в Unix Изменение поведения
NamedPipeServerStream с PipeOptions.CurrentUserOnly ужесточает разрешения файла сокета Unix Изменение поведения
Nullable.GetUnderlyingType вызывает исключение для пользовательских подклассов Type Изменение поведения
PackagePart.GetStream() возвращает поток, не поддерживающий позиционирование, для сжатых частей в пакетах ReadWrite Изменение поведения
Устаревания API с идентификаторами диагностики, не используемыми по умолчанию (.NET 11) Несовместимый источник
SafeFileHandle.IsAsync и FileStream.IsAsync точно отражают неблокирующее состояние в Unix Изменение поведения
API чтения TAR проверяют контрольные суммы заголовков при чтении Изменение поведения
TarWriter использует записи HardLink для жестко связанных файлов Изменение поведения
Операции с тензорами выравнивают эквивалентные формы и пустые тензоры Изменение поведения
Операции с тензорами отклоняют неподдерживаемые схемы размещения данных Изменение поведения
ZipArchive.CreateAsync сразу загружает записи ZIP-архива Изменение поведения

Cryptography

Название Тип изменения
Устаревание API Несовместимый источник
Составной ML-DSA в Windows использует собственную реализацию Изменение поведения
DSA удалена из macOS Изменение поведения
HKDF в Windows использует реализацию CNG Изменение поведения
Получение сертификата AIA в Linux ограничено двумя запросами для каждой сборки цепочки Изменение поведения

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

Название Тип изменения
configProperties в .runtimeconfig.dev.json переопределяют .runtimeconfig.json Изменение поведения

Extensions

Название Тип изменения
Асинхронные перегрузки ChangeToken.OnChange повторно привязывают существующие обратные вызовы, возвращающие задачу Изменение поведения
Удаление области внедрения зависимостей агрегирует исключения Изменение поведения
Пустые строки в цепочке конфигурации переопределяют значения из более ранних поставщиков Изменение поведения
FileConfigurationProvider не вызывает маркер перезагрузки после игнорируемого сбоя загрузки Изменение поведения
Обратный вызов FileConfigurationSource.OnLoadException вызывается для ошибок ввода-вывода Изменение поведения
IHost.RunAsync и IHost.StopAsync вызывают исключение при сбое BackgroundService Изменение поведения
Генератор проверки параметров конфигурации сообщает о SYSLIB1205 для явных реализаций Validate Несовместимый источник
PhysicalFilesWatcher проверяет корневой путь и путь FileSystemWatcher Изменение поведения
Некоторые пакеты Microsoft.Extensions, включенные в общую платформу Изменение поведения

Globalization

Название Тип изменения
Исправлена минимальная поддерживаемая дата японского календаря Изменение поведения

Interop

Название Тип изменения
Native AOT отклоняет неблиттируемые сигнатуры UnmanagedCallersOnly Изменение поведения
NativeAOT использует префикс lib для выходных файлов нативной библиотеки в Unix Изменение поведения

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

Название Тип изменения
Преобразования с плавающей запятой в небольшие целочисленные типы выполняются с насыщением Изменение поведения
Минимальные требования к оборудованию обновлены Изменение поведения

Сеть

Название Тип изменения
Метрики высокой кардинальности HttpClient используют наблюдаемые счетчики Изменение поведения
Загрузка сертификатов AIA на стороне сервера SslStream отключена по умолчанию Изменение поведения

.NET MAUI

Название Тип изменения
Android x86 не поддерживается Двоичные несовместимые или поведенческие изменения
Создание кода на мобильных устройствах меняется с Mono на CoreCLR Изменение, несовместимое с источником/поведенческое изменение
CoreCLR заменяет среду выполнения Mono для мобильных приложений .NET Двоичная несовместимость / несовместимость исходного кода / изменение поведения
События трассировки CoreCLR заменяют события трассировки Mono Двоичная несовместимость / несовместимость исходного кода / изменение поведения
Изменения в поведении отчетов о сбоях на мобильных платформах Изменение поведения
Отладка интерфейсов на мобильных платформах с переходом на ICorDebug Двоичная несовместимость / несовместимость исходного кода / изменение поведения
Минимальный уровень API Android повышен до 24 Изменение поведения
Api внедрения Mono больше не поддерживаются на мобильных платформах Двоичная несовместимость / несовместимость исходного кода / изменение поведения
Свойства проекта Mono больше не настраивают мобильные приложения Изменение, несовместимое с источником/поведенческое изменение
Параметры среды выполнения Mono больше не используются для настройки мобильных приложений Несовместимость поведенческой модели и исходного кода
UnwindNativeCode не поддерживается на целевых платформах Apple Изменение, несовместимое с источником/поведенческое изменение

SDK и MSBuild

Название Тип изменения
Скрипты dnx обходят выбор SDK в global.json Изменение поведения
Полная сборка пропущена для публикации Native AOT Изменение поведения
Целевой объект запуска mono не задан для приложений .NET Framework Изменение поведения
Обработка команд CLI NativeAOT включена по умолчанию Изменение поведения
NU1703 предупреждает о пакетах, использующих устаревшие ресурсы платформы MonoAndroid Несовместимый источник
В Linux перемещен каталог блокировок NuGet Изменение поведения
NuGet pack предупреждает об идентификаторах пакетов с ограниченными символами Изменение поведения
Восстановление не выполняет поиск более поздней версии в папке глобальных пакетов Несовместимый источник
При выборе локальной среды выполнения контейнеров SDK предпочтение отдается собственным средствам платформы Изменение поведения
Пакеты обработчика шаблонов больше не поддерживают netstandard2.0 Несовместимый двоичный или исходный код
При установке пакета шаблонов выполняется проверка подписей NuGet Изменение поведения
VSTest удаляет зависимость от Newtonsoft.Json Несовместимый двоичный или исходный код