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.
Empfohlene Maßnahme
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.