Compartilhar via


Comportamento GetFolderPath no UNIX

A partir do .NET 8, o comportamento de Environment.GetFolderPath nos sistemas operacionais Unix foi alterado.

Descrição da alteração

As tabelas a seguir mostram como o valor do caminho retornado é alterado para cada sistema operacional Unix para várias pastas especiais.

Linux

Valor de SpecialFolder Caminho (.NET 7 e anteriores) Caminho (.NET 8 e posteriores)
MyDocuments $HOME XDG_DOCUMENTS_DIR Usa se disponível; caso contrário,$HOME/Documents
Personal $HOME XDG_DOCUMENTS_DIR Usa se 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 a biblioteca/aplicativo)
LocalApplicationData $HOME/.local/share NSApplicationSupportDirectory (suporte a biblioteca/aplicativo)
MyVideos $HOME/Videos NSMoviesDirectory ($HOME/Movies)

Andróide

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 mudança disruptiva

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 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 você estiver usando Environment.SpecialFolder.Personal dessa forma, altere seu código para passar Environment.SpecialFolder.UserProfile em vez disso (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)).

Para outros intervalos, a ação recomendada é realizar uma das seguintes ações:

  • Migre os arquivos do aplicativo para o diretório apropriado.
  • Adicione uma verificação de fallback para o local anterior ao seu código.

APIs afetadas