Toolmanifeste im Stammordner

.NET sucht nicht mehr nach lokalen Toolmanifestdateien im Stammordner unter Windows, es sei denn, sie werden über die Umgebungsvariable DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT außer Kraft gesetzt. Diese Änderung wirkt sich nicht auf Linux oder macOS aus.

Vorheriges Verhalten

Zuvor haben lokale .NET SDK-Tools den Stammordner auf allen Plattformen beim Suchen nach einem Toolmanifest überprüft. Die Suche wurde aus dem aktuellen Verzeichnis bis zum Stammordner fortgesetzt, bis ein Manifest gefunden wurde. Auf jeder Ebene sucht .NET nach dem Toolmanifest mit dem Namen dotnet-tools.jsonin einem .config Unterordner. Wenn kein anderes Toolmanifest gefunden wurde, hat das SDK auf einem Windows-System letztendlich in C:\.config\dotnet-tools.jsonnach einem Toolmanifest gesucht.

Neues Verhalten

.NET sucht nicht mehr im Stammordner der aktuellen Verzeichnisstruktur standardmäßig unter Windows, es sei denn, sie wird über die Umgebungsvariable DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT außer Kraft gesetzt. DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT ist standardmäßig auf false festgelegt.

Eingeführt in Version

  • .NET SDK 7.0.3xx
  • .NET SDK 7.0.1xx
  • .NET SDK 6.0.4xx
  • .NET SDK 6.0.3xx
  • .NET SDK 6.0.1xx
  • .NET SDK 3.1.4xx

Typ des Breaking Changes

Diese Änderung ist eine Verhaltensänderung.

Grund für die Änderung

Diese Änderung wurde vorgenommen, um ein Sicherheitsproblem zu beheben. Da alle Benutzer Dateien und Ordner im C:\-Verzeichnis unter Windows erstellen können, können Angreifer mit geringen Rechten die C:\.config\dotnet-tools.json-Datei einnehmen. Wenn ein Administrator einen dotnet-Toolbefehl ausführt, kann das Tool potenziell schädliche Konfigurationsinformationen aus der Datei lesen und schädliche Tools herunterladen und ausführen.

Legen Sie die DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT Umgebungsvariable auf true oder 1 fest, um das neue Verhalten zu deaktivieren.

Siehe auch