Freigeben über


GetFolderPath-Verhalten unter Unix

Ab .NET 8 hat sich das Verhalten von Environment.GetFolderPath unter Unix-Betriebssystemen geändert.

Änderungsbeschreibung

Die folgenden Tabellen zeigen, wie sich der zurückgegebene Pfadwert für jedes Unix-Betriebssystem für verschiedene spezielle Ordner ändert.

Linux

SpecialFolder-Wert Pfad (.NET 7 und früher) Pfad (.NET 8 und höher)
MyDocuments $HOME Verwendet XDG_DOCUMENTS_DIR, falls verfügbar; andernfalls $HOME/Documents
Personal $HOME Verwendet XDG_DOCUMENTS_DIR, falls verfügbar; andernfalls $HOME/Documents

macOS

SpecialFolder-Wert Pfad (.NET 7 und früher) Pfad (.NET 8 und höher)
MyDocuments $HOME NSDocumentDirectory ($HOME/Documents)
Personal $HOME NSDocumentDirectory ($HOME/Documents)
ApplicationData $HOME/.config NSApplicationSupportDirectory (Bibliothek/Anwendungsunterstützung)
LocalApplicationData $HOME/.local/share NSApplicationSupportDirectory (Bibliothek/Anwendungsunterstützung)
MyVideos $HOME/Videos NSMoviesDirectory ($HOME/Movies)

Android

SpecialFolder-Wert Pfad (.NET 7 und früher) Pfad (.NET 8 und höher)
MyDocuments $HOME $HOME/Documents
Personal $HOME $HOME/Documents

Eingeführt in Version

.NET 8 Preview 1

Typ des Breaking Changes

Diese Änderung ist eine Verhaltensänderung.

Grund für die Änderung

Das vorherige Verhalten war falsch und entsprach nicht den Erwartungen der Benutzer*innen für Linux, macOS und Android.

Die häufigste Unterbrechung tritt auf, wenn Sie in Unix System.Environment.SpecialFolder.Personal an Environment.GetFolderPath(Environment+SpecialFolder) übergeben, um das $HOME-Verzeichnis (Environment.GetFolderPath(Environment.SpecialFolder.Personal)) abzurufen. Environment.SpecialFolder.Personal und Environment.SpecialFolder.MyDocuments sind Aliase für denselben zugrunde liegenden Enumerationswert. Wenn Sie Environment.SpecialFolder.Personal auf diese Weise verwenden, ändern Sie Ihren Code so, dass stattdessen Environment.SpecialFolder.UserProfile übergeben wird (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)).

Für andere Unterbrechungen sollte eine der folgenden Aktionen ausgeführt werden:

  • Migrieren Sie die Dateien Ihrer Anwendung in das entsprechende Verzeichnis.
  • Fügen Sie Ihrem Code eine Fallbackprüfung für den vorherigen Speicherort hinzu.

Betroffene APIs