Aracılığıyla paylaş


Unix'te GetFolderPath davranışı

.NET 8'den başlayarak Unix işletim sistemlerinin Environment.GetFolderPath davranışı değişti.

Açıklama değiştirildi

Aşağıdaki tablolarda, çeşitli özel klasörler için her Unix işletim sistemi için döndürülen yol değerinin nasıl değiştiği gösterilmektedir.

Linux

SpecialFolder değeri Yol (.NET 7 ve öncesi) Yol (.NET 8 ve üzeri)
MyDocuments $HOME Varsa kullanır XDG_DOCUMENTS_DIR ; aksi takdirde $HOME/Documents
Personal $HOME Varsa kullanır XDG_DOCUMENTS_DIR ; aksi takdirde $HOME/Documents

macOS

SpecialFolder değeri Yol (.NET 7 ve öncesi) Yol (.NET 8 ve üzeri)
MyDocuments $HOME NSDocumentDirectory ($HOME/Documents)
Personal $HOME NSDocumentDirectory ($HOME/Documents)
ApplicationData $HOME/.config NSApplicationSupportDirectory (Kitaplık/Uygulama Desteği)
LocalApplicationData $HOME/.local/share NSApplicationSupportDirectory (Kitaplık/Uygulama Desteği)
MyVideos $HOME/Videos NSMoviesDirectory ($HOME/Movies)

Android

SpecialFolder değeri Yol (.NET 7 ve öncesi) Yol (.NET 8 ve üzeri)
MyDocuments $HOME $HOME/Documents
Personal $HOME $HOME/Documents

Sürüm kullanıma sunulmuştur

.NET 8 Preview 1

Hataya neden olan değişikliğin türü

Bu değişiklik davranışsal bir değişikliktir.

Değişiklik nedeni

Önceki davranış yanlıştı ve Linux, macOS ve Android için kullanıcı beklentilerini karşılamadı.

En yaygın kesme, dizinini (Environment.GetFolderPath(Environment.SpecialFolder.Personal)) almak $HOME için Unix'e Environment.GetFolderPath(Environment+SpecialFolder) geçiş System.Environment.SpecialFolder.Personal yapmaktır. Environment.SpecialFolder.Personal ve Environment.SpecialFolder.MyDocuments aynı temel numaralandırma değerinin diğer adlarıdır. Bu şekilde kullanıyorsanızEnvironment.SpecialFolder.Personal, bunun yerine (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)) geçirmek Environment.SpecialFolder.UserProfile için kodunuzu değiştirin.

Diğer kesmeler için önerilen eylem aşağıdakilerden birini yapmaktır:

  • Uygulamanızın dosyalarını uygun dizine geçirin.
  • Kodunuza önceki konum için geri dönüş denetimi ekleyin.

Etkilenen API’ler