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.

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.

Dotyczy interfejsów API