Многоуровневый поиск отключен
В Windows приложения .NET, зависящие от платформы, больше не ищут платформы в нескольких расположениях установки.
Прежнее поведение
В предыдущих версиях приложение .NET, зависящее от платформы, ищет платформы в нескольких расположениях установки в Windows. Расположения:
- При запуске приложения через dotnet подкаталоги относительно исполняемого
dotnet
файла. - При запуске приложения через исполняемый файл (
apphost
) расположение, указанное значением переменнойDOTNET_ROOT
среды (если задано). - Глобально зарегистрированное расположение установки в HKLM\SOFTWARE\dotnet\Setup\InstallVersions<arch>\InstallLocation (если задано).
- Расположение установки по умолчанию %ProgramFiles%\dotnet (или %ProgramFiles(x86)%\dotnet для 32-разрядных процессов в 64-разрядной версии Windows.
Это многоуровневое поведение подстановки было включено по умолчанию, но может быть отключено, задав переменную DOTNET_MULTILEVEL_LOOKUP=0
среды.
Новое поведение
Приложения, предназначенные для .NET 7 или более поздней версии, ищут платформы только в одном расположении, которое является первым расположением, где найдена установка .NET. При запуске приложения через dotnet платформы ищутся только в подкаталогах относительно исполняемого dotnet
файла. При запуске приложения через исполняемый файл (apphost
), платформы ищутся только в первых из следующих расположений, где найден .NET:
- Расположение, указанное значением
DOTNET_ROOT
переменной среды (если задано). - Глобально зарегистрированное расположение установки в HKLM\SOFTWARE\dotnet\Setup\InstallVersions<arch>\InstallLocation (если задано).
- Расположение установки по умолчанию %ProgramFiles%\dotnet (или %ProgramFiles(x86)%\dotnet для 32-разрядных процессов в 64-разрядной версии Windows.
Представленные версии
.NET 7
Тип критического изменения
Это изменение может повлиять на совместимость двоичного кода.
Причина изменения
Были многочисленные проблемы, вызванные многоуровневой подстановки:
- Путаница для пользователей: приложение может выбрать глобальное или стандартное расположение установки, несмотря на запуск .NET из частной установки.
- Несоответствие между платформами (Windows и не Windows).
- Разрывы поведения часто в автоматизированных системах: новая глобальная установка .NET может повлиять на изолированные сборки и тесты.
- Проблемы производительности.
Рекомендуемое действие
Убедитесь, что требуемая версия .NET установлена в одном расположении установки .NET. Сообщения об ошибках, создаваемые при сбое запуска, включают ожидаемое расположение.
Затронутые API
Нет.