Zachowanie GetFolderPath w systemie Unix
Począwszy od platformy .NET 8, zachowanie Environment.GetFolderPath w systemach operacyjnych Unix uległo zmianie.
Opis zmiany
W poniższych tabelach pokazano, jak zwracana wartość ścieżki zmienia się dla każdego systemu operacyjnego Unix dla różnych folderów specjalnych.
Linux
Wartość SpecialFolder | Ścieżka (.NET 7 i starsze) | Ścieżka (.NET 8 i nowsze) |
---|---|---|
MyDocuments |
$HOME |
Używa XDG_DOCUMENTS_DIR metody , jeśli jest dostępna; w przeciwnym razie $HOME/Documents |
Personal |
$HOME |
Używa XDG_DOCUMENTS_DIR metody , jeśli jest dostępna; w przeciwnym razie $HOME/Documents |
macOS
Wartość SpecialFolder | Ścieżka (.NET 7 i starsze) | Ścieżka (.NET 8 i nowsze) |
---|---|---|
MyDocuments |
$HOME |
NSDocumentDirectory ($HOME/Documents ) |
Personal |
$HOME |
NSDocumentDirectory ($HOME/Documents ) |
ApplicationData |
$HOME/.config |
NSApplicationSupportDirectory (obsługa biblioteki/aplikacji) |
LocalApplicationData |
$HOME/.local/share |
NSApplicationSupportDirectory (obsługa biblioteki/aplikacji) |
MyVideos |
$HOME/Videos |
NSDirectory ($HOME/Movies ) |
Android
Wartość SpecialFolder | Ścieżka (.NET 7 i starsze) | Ścieżka (.NET 8 i nowsze) |
---|---|---|
MyDocuments |
$HOME |
$HOME/Documents |
Personal |
$HOME |
$HOME/Documents |
Wprowadzona wersja
.NET 8 (wersja zapoznawcza 1)
Typ zmiany powodującej niezgodność
Ta zmiana jest zmianą behawioralną.
Przyczyna wprowadzenia zmiany
Poprzednie zachowanie było nieprawidłowe i nie spełniało oczekiwań użytkownika dla systemów Linux, macOS i Android.
Zalecana akcja
Najczęstszą przerwą jest System.Environment.SpecialFolder.Personal przekazanie do Environment.GetFolderPath(Environment+SpecialFolder) katalogu w systemie Unix w celu pobrania $HOME
katalogu (Environment.GetFolderPath(Environment.SpecialFolder.Personal)
). Environment.SpecialFolder.Personal i Environment.SpecialFolder.MyDocuments są aliasami dla tej samej bazowej wartości wyliczenia. Jeśli używasz Environment.SpecialFolder.Personal w ten sposób, zmień kod, aby zamiast tego (Environment.SpecialFolder.UserProfileEnvironment.GetFolderPath(Environment.SpecialFolder.UserProfile)
).
W przypadku innych przerw zalecaną akcją jest wykonanie jednej z następujących czynności:
- Przeprowadź migrację plików aplikacji do odpowiedniego katalogu.
- Dodaj kontrolę rezerwową dla poprzedniej lokalizacji do kodu.