Partager via


Comportement GetFolderPath sur Unix

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

Description de la modification

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

Linux

Valeur de SpecialFolder Chemin (.NET 7 et versions antérieures) Chemin (.NET 8 et versions ultérieures)
MyDocuments $HOME XDG_DOCUMENTS_DIR si disponible ; sinon, $HOME/Documents
Personal $HOME XDG_DOCUMENTS_DIR si disponible ; sinon, $HOME/Documents

macOS

Valeur de SpecialFolder Chemin (.NET 7 et versions antérieures) Chemin (.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)

Android

Valeur de SpecialFolder Chemin (.NET 7 et versions antérieures) Chemin (.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 du changement

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

La rupture la plus courante se produit en passant 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 constituent des alias de la même valeur d’énumération sous-jacente. Si vous utilisez Environment.SpecialFolder.Personal de cette manière, modifiez votre code de façon à passer Environment.SpecialFolder.UserProfile (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)).

Pour les autres ruptures, les actions recommandées sont les suivantes :

  • Migrez les fichiers de votre application vers le répertoire approprié.
  • Ajoutez à votre code une vérification de secours pour l’emplacement précédent.

API affectées