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


Многоуровневый поиск отключен

В 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

Нет.