Dela via


GetFolderPath-beteende i Unix

Från och med .NET 8 har beteendet Environment.GetFolderPath för unix-operativsystem ändrats.

Ändra beskrivning

Följande tabeller visar hur det returnerade sökvägsvärdet ändras för varje Unix-operativsystem för olika särskilda mappar.

Linux

SpecialFolder-värde Sökväg (.NET 7 och tidigare) Sökväg (.NET 8 och senare)
MyDocuments $HOME Använder XDG_DOCUMENTS_DIR om tillgängligt; annars $HOME/Documents
Personal $HOME Använder XDG_DOCUMENTS_DIR om tillgängligt; annars $HOME/Documents

macOS

SpecialFolder-värde Sökväg (.NET 7 och tidigare) Sökväg (.NET 8 och senare)
MyDocuments $HOME NSDocumentDirectory ($HOME/Documents)
Personal $HOME NSDocumentDirectory ($HOME/Documents)
ApplicationData $HOME/.config NSApplicationSupportDirectory (bibliotek/programsupport)
LocalApplicationData $HOME/.local/share NSApplicationSupportDirectory (bibliotek/programsupport)
MyVideos $HOME/Videos NSMoviesDirectory ($HOME/Movies)

Android

SpecialFolder-värde Sökväg (.NET 7 och tidigare) Sökväg (.NET 8 och senare)
MyDocuments $HOME $HOME/Documents
Personal $HOME $HOME/Documents

Version introducerad

Förhandsversion 1 av .NET 8

Typ av icke-bakåtkompatibel ändring

Den här ändringen är en beteendeförändring.

Orsak till ändringen

Det tidigare beteendet var felaktigt och uppfyllde inte användarnas förväntningar på Linux, macOS och Android.

Den vanligaste pausen $HOME är om du skickar System.Environment.SpecialFolder.Personal till Environment.GetFolderPath(Environment+SpecialFolder) Unix för att hämta katalogen (Environment.GetFolderPath(Environment.SpecialFolder.Personal)). Environment.SpecialFolder.Personal och Environment.SpecialFolder.MyDocuments är alias för samma underliggande uppräkningsvärde. Om du använder Environment.SpecialFolder.Personal på det här sättet ändrar du koden så att den skickas Environment.SpecialFolder.UserProfile i stället (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)).

För andra pauser är den rekommenderade åtgärden att göra något av följande:

  • Migrera programmets filer till rätt katalog.
  • Lägg till en reservkontroll för den tidigare platsen i koden.

Berörda API:er