Partager via


Comportement GetFolderPath sur Unix

À compter de .NET 8, le comportement des Environment.GetFolderPath systèmes d’exploitation Unix a changé.

Description de la modification

Les tableaux suivants montrent comment la valeur de chemin retournée change pour chaque système d’exploitation Unix pour différents dossiers spéciaux.

Linux

Valeur SpecialFolder Chemin d’accès (.NET 7 et versions antérieures) Chemin d’accès (.NET 8 et versions ultérieures)
MyDocuments $HOME Utilise XDG_DOCUMENTS_DIR si disponible ; sinon $HOME/Documents
Personal $HOME Utilise XDG_DOCUMENTS_DIR si disponible ; sinon $HOME/Documents

macOS

Valeur SpecialFolder Chemin d’accès (.NET 7 et versions antérieures) Chemin d’accès (.NET 8 et versions ultérieures)
MyDocuments $HOME NSDocumentDirectory ($HOME/Documents)
Personal $HOME NSDocumentDirectory ($HOME/Documents)
ApplicationData $HOME/.config NSApplicationSupportDirectory (bibliothèque/support d’application)
LocalApplicationData $HOME/.local/share NSApplicationSupportDirectory (bibliothèque/support d’application)
MyVideos $HOME/Videos NSMoviesDirectory ($HOME/Movies)

Androïde

Valeur SpecialFolder Chemin d’accès (.NET 7 et versions antérieures) Chemin d’accès (.NET 8 et versions ultérieures)
MyDocuments $HOME $HOME/Documents
Personal $HOME $HOME/Documents

Version introduite

.NET 8 Préversion 1

Type de changement cassant

Ce changement est un changement de comportement.

Raison de la modification

Le comportement précédent était incorrect et ne répondait pas aux attentes des utilisateurs pour Linux, macOS et Android.

La rupture la plus courante est celle qui consiste à passer System.Environment.SpecialFolder.Personal à Environment.GetFolderPath(Environment+SpecialFolder) sur Unix pour obtenir le répertoire $HOME (Environment.GetFolderPath(Environment.SpecialFolder.Personal)). Environment.SpecialFolder.Personal et Environment.SpecialFolder.MyDocuments sont des alias pour la même valeur d’énumération sous-jacente. Si vous utilisez Environment.SpecialFolder.Personal de cette façon, modifiez votre code pour passer Environment.SpecialFolder.UserProfile (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)).

Pour les autres pauses, l’action recommandée consiste à effectuer l’une des actions suivantes :

  • Migrez les fichiers de votre application vers le répertoire approprié.
  • Ajoutez un contrôle de secours pour la position précédente à votre code.

API affectées