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.
Empfohlene Aktion
Legen Sie die DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
Umgebungsvariable auf true
oder 1
fest, um das neue Verhalten zu deaktivieren.