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.
Action recommandée
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.