Partilhar via


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 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.

APIs afetadas