Comportamento di GetFolderPath in Unix
A partire da .NET 8, il comportamento di Environment.GetFolderPath nei sistemi operativi Unix è cambiato.
Descrizione delle modifiche
Le tabelle seguenti illustrano come cambia il valore del percorso restituito per ogni sistema operativo Unix per varie cartelle speciali.
Linux
Valore SpecialFolder | Percorso (.NET 7 e versioni precedenti) | Percorso (.NET 8 e versioni successive) |
---|---|---|
MyDocuments |
$HOME |
Utilizza se XDG_DOCUMENTS_DIR disponibile; in caso contrario, $HOME/Documents |
Personal |
$HOME |
Utilizza se XDG_DOCUMENTS_DIR disponibile; in caso contrario, $HOME/Documents |
macOS
Valore SpecialFolder | Percorso (.NET 7 e versioni precedenti) | Percorso (.NET 8 e versioni successive) |
---|---|---|
MyDocuments |
$HOME |
NSDocumentDirectory ($HOME/Documents ) |
Personal |
$HOME |
NSDocumentDirectory ($HOME/Documents ) |
ApplicationData |
$HOME/.config |
NSApplicationSupportDirectory (Libreria/Supporto applicazioni) |
LocalApplicationData |
$HOME/.local/share |
NSApplicationSupportDirectory (Libreria/Supporto applicazioni) |
MyVideos |
$HOME/Videos |
NSMoviesDirectory ($HOME/Movies ) |
Android
Valore SpecialFolder | Percorso (.NET 7 e versioni precedenti) | Percorso (.NET 8 e versioni successive) |
---|---|---|
MyDocuments |
$HOME |
$HOME/Documents |
Personal |
$HOME |
$HOME/Documents |
Versione introdotta
.NET 8 anteprima 1
Tipo di modifica che causa un'interruzione
Questa è una modifica funzionale.
Motivo della modifica
Il comportamento precedente non è corretto e non soddisfa le aspettative degli utenti per Linux, macOS e Android.
Azione consigliata
L'interruzione più comune è se si passa System.Environment.SpecialFolder.Personal a Environment.GetFolderPath(Environment+SpecialFolder) su Unix per ottenere la directory $HOME
(Environment.GetFolderPath(Environment.SpecialFolder.Personal)
). Environment.SpecialFolder.Personal e Environment.SpecialFolder.MyDocuments sono alias per lo stesso valore di enumerazione sottostante. Se si usa Environment.SpecialFolder.Personal in questo modo, modificare invece il codice per passare Environment.SpecialFolder.UserProfile (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
).
Per altre interruzioni, l'azione consigliata consiste nell'eseguire una delle operazioni seguenti:
- Eseguire la migrazione dei file dell'applicazione alla directory appropriata.
- Aggiungere un controllo di fallback per il percorso precedente al codice.