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


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

В 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

Нет.