Comportamento GetFolderPath no UNIX
Começando no .NET 8, o comportamento de Environment.GetFolderPath nos sistemas operacionais Unix foi alterado.
Descrição das alterações
As tabelas a seguir mostram como o valor do caminho retornado é alterado para cada sistema operacional Unix para diversas pastas especiais.
Linux
Valor de SpecialFolder | Caminho (.NET 7 e anteriores) | Caminho (.NET 8 e posteriores) |
---|---|---|
MyDocuments |
$HOME |
Usa XDG_DOCUMENTS_DIR se estiver disponível; caso contrário, $HOME/Documents . |
Personal |
$HOME |
Usa XDG_DOCUMENTS_DIR se estiver disponível; caso contrário, $HOME/Documents . |
macOS
Valor de SpecialFolder | Caminho (.NET 7 e anteriores) | Caminho (.NET 8 e posteriores) |
---|---|---|
MyDocuments |
$HOME |
NSDocumentDirectory ($HOME/Documents ) |
Personal |
$HOME |
NSDocumentDirectory ($HOME/Documents ) |
ApplicationData |
$HOME/.config |
NSApplicationSupportDirectory (Suporte para biblioteca/aplicativo) |
LocalApplicationData |
$HOME/.local/share |
NSApplicationSupportDirectory (Suporte para biblioteca/aplicativo) |
MyVideos |
$HOME/Videos |
NSMoviesDirectory ($HOME/Movies ) |
Android
Valor de SpecialFolder | Caminho (.NET 7 e anteriores) | Caminho (.NET 8 e posteriores) |
---|---|---|
MyDocuments |
$HOME |
$HOME/Documents |
Personal |
$HOME |
$HOME/Documents |
Versão introduzida
.NET 8 versão prévia 1
Tipo de alteração interruptiva
Esta é uma alteração comportamental.
Motivo da 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 interrupção mais comum é se você estiver passando System.Environment.SpecialFolder.Personal para Environment.GetFolderPath(Environment+SpecialFolder) no Unix para obter o diretório $HOME
(Environment.GetFolderPath(Environment.SpecialFolder.Personal)
). Environment.SpecialFolder.Personal e Environment.SpecialFolder.MyDocuments são aliases para o mesmo valor de enumeração subjacente. Se estiver usando Environment.SpecialFolder.Personal dessa forma, altere o código para passar Environment.SpecialFolder.UserProfile em vez disso (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
).
Para outras interrupções, a ação recomendada é fazer um dos seguintes 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.