Comportamento GetFolderPath no Unix
A partir do .NET 8, o comportamento dos Environment.GetFolderPath sistemas operacionais Unix mudou.
Alterar a descrição
As tabelas a seguir mostram como o valor do caminho retornado muda para cada sistema operacional Unix para várias pastas especiais.
Linux
Valor SpecialFolder | Caminho (.NET 7 e anteriores) | Caminho (.NET 8 e posterior) |
---|---|---|
MyDocuments |
$HOME |
Utilizações XDG_DOCUMENTS_DIR , se disponíveis; $HOME/Documents |
Personal |
$HOME |
Utilizações XDG_DOCUMENTS_DIR , se disponíveis; $HOME/Documents |
macOS
Valor SpecialFolder | Caminho (.NET 7 e anteriores) | Caminho (.NET 8 e posterior) |
---|---|---|
MyDocuments |
$HOME |
NSDocumentDirectory ($HOME/Documents ) |
Personal |
$HOME |
NSDocumentDirectory ($HOME/Documents ) |
ApplicationData |
$HOME/.config |
NSApplicationSupportDirectory (Biblioteca/Suporte a aplicativos) |
LocalApplicationData |
$HOME/.local/share |
NSApplicationSupportDirectory (Biblioteca/Suporte a aplicativos) |
MyVideos |
$HOME/Videos |
NSMoviesDirectory ($HOME/Movies ) |
Android
Valor SpecialFolder | Caminho (.NET 7 e anteriores) | Caminho (.NET 8 e posterior) |
---|---|---|
MyDocuments |
$HOME |
$HOME/Documents |
Personal |
$HOME |
$HOME/Documents |
Versão introduzida
.NET 8 Visualização 1
Tipo de mudança de rutura
Esta mudança é uma mudança comportamental.
Razão para a alteração
O comportamento anterior estava incorreto e não atendia às expectativas do usuário para Linux, macOS e Android.
Ação recomendada
A quebra mais comum é se você estiver passando System.Environment.SpecialFolder.Personal para Environment.GetFolderPath(Environment+SpecialFolder) o Unix para obter o $HOME
diretório (Environment.GetFolderPath(Environment.SpecialFolder.Personal)
). Environment.SpecialFolder.Personal e Environment.SpecialFolder.MyDocuments são aliases para o mesmo valor de enumeração subjacente. Se você estiver usando Environment.SpecialFolder.Personal dessa maneira, altere seu código para passar Environment.SpecialFolder.UserProfile em vez disso (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
).
Para outras pausas, a ação recomendada é seguir um destes procedimentos:
- Migre os arquivos do aplicativo para o diretório apropriado.
- Adicione uma verificação de fallback para o local anterior ao seu código.