Freigeben über


Mehrstufige Suche deaktiviert

Unter Windows suchen frameworkabhängige .NET-Anwendungen nicht mehr nach Frameworks an mehreren Installationsspeicherorten.

Vorheriges Verhalten

In früheren Versionen suchte eine frameworkabhängige .NET-Anwendung nach Frameworks an mehreren Installationsspeicherorten unter Windows. Die Standorte waren:

  • Bei Ausführung der Anwendung über dotnet Unterverzeichnisse relativ zur ausführbaren dotnet-Datei.
  • Beim Ausführen der Anwendung über die ausführbare Datei (apphost) der durch den Wert der DOTNET_ROOT-Umgebungsvariablen angegebene Speicherort (sofern festgelegt).
  • Der global registrierte Installationsspeicherort in HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (sofern festgelegt).
  • Der Standardinstallationsort von %ProgramFiles%\dotnet (oder %ProgramFiles(x86)%\dotnet für 32-Bit-Prozesse unter 64-Bit-Windows).

Dieses Mehrebenen-Nachschlageverhalten wurde standardmäßig aktiviert, konnte jedoch durch Festlegen der Umgebungsvariable DOTNET_MULTILEVEL_LOOKUP=0deaktiviert werden.

Neues Verhalten

Anwendungen, die auf .NET 7 oder eine höhere Version abzielen, suchen nur an einem Speicherort nach Frameworks. Dies ist der erste Speicherort, an dem eine .NET-Installation gefunden wird. Beim Ausführen einer Anwendung über dotnet werden Frameworks nur in Unterverzeichnissen relativ zur ausführbaren dotnet-Datei gesucht. Wenn eine Anwendung über ihre ausführbare Datei (apphost) ausgeführt wird, wird nur am ersten der folgenden Speicherorte, an denen .NET gefunden wird, nach Frameworks gesucht:

  • Der durch den Wert der DOTNET_ROOT Umgebungsvariable angegebene Position (falls festgelegt).
  • Der global registrierte Installationsspeicherort in HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (sofern festgelegt).
  • Der Standardinstallationsort von %ProgramFiles%\dotnet (oder %ProgramFiles(x86)%\dotnet für 32-Bit-Prozesse unter 64-Bit-Windows).

Eingeführte Version

.NET 7

Art der einschneidenden Änderung

Diese Änderung kann sich auf die Binäre Kompatibilität auswirken.

Grund für Änderung

Es gab zahlreiche Probleme, die durch eine mehrstufige Suche verursacht wurden:

  • Verwirrung für Benutzer: Die Anwendung kann einen globalen oder Standardinstallationsspeicherort auswählen, obwohl .NET von einer privaten Installation ausgeführt wird.
  • Inkonsistenz zwischen Plattformen (Windows und Nicht-Windows).
  • Verhaltensunterbrechungen, häufig in automatisierten Systemen: Eine neue globale .NET-Installation kann sich auf andere isolierte Builds und Tests auswirken.
  • Leistungsaspekte.

Stellen Sie sicher, dass die erforderliche Version von .NET am einzelnen .NET-Installationsspeicherort installiert ist. Die Fehlermeldungen, die bei einem Fehler beim Starten ausgegeben werden, enthalten den erwarteten Speicherort.

Betroffene APIs

Keiner.