Bagikan melalui


Perilaku GetFolderPath di Unix

Mulai dari .NET 8, perilaku Environment.GetFolderPath pada sistem operasi Unix telah berubah.

Deskripsi perubahan

Tabel berikut menunjukkan bagaimana nilai jalur yang dikembalikan berubah untuk setiap sistem operasi Unix untuk berbagai folder khusus.

Linux

Nilai SpecialFolder Jalur (.NET 7 dan yang lebih lama) Jalur (.NET 8 dan yang lebih baru)
MyDocuments $HOME XDG_DOCUMENTS_DIR Menggunakan jika tersedia; jika tidak$HOME/Documents
Personal $HOME XDG_DOCUMENTS_DIR Menggunakan jika tersedia; jika tidak$HOME/Documents

macOS

Nilai SpecialFolder Jalur (.NET 7 dan yang lebih lama) Jalur (.NET 8 dan yang lebih baru)
MyDocuments $HOME NSDocumentDirectory ($HOME/Documents)
Personal $HOME NSDocumentDirectory ($HOME/Documents)
ApplicationData $HOME/.config NSApplicationSupportDirectory (Dukungan Pustaka/Aplikasi)
LocalApplicationData $HOME/.local/share NSApplicationSupportDirectory (Dukungan Pustaka/Aplikasi)
MyVideos $HOME/Videos NSMoviesDirectory ($HOME/Movies)

Android

Nilai SpecialFolder Jalur (.NET 7 dan yang lebih lama) Jalur (.NET 8 dan yang lebih baru)
MyDocuments $HOME $HOME/Documents
Personal $HOME $HOME/Documents

Versi yang diperkenalkan

Pratinjau .NET 8 1

Jenis perubahan yang melanggar

Perubahan ini adalah perubahan perilaku.

Alasan untuk berubah

Perilaku sebelumnya salah dan tidak memenuhi harapan pengguna untuk Linux, macOS, dan Android.

Jeda yang paling umum adalah jika Anda meneruskan System.Environment.SpecialFolder.Personal ke Environment.GetFolderPath(Environment+SpecialFolder) Unix untuk mendapatkan $HOME direktori (Environment.GetFolderPath(Environment.SpecialFolder.Personal)). Environment.SpecialFolder.Personal dan Environment.SpecialFolder.MyDocuments merupakan alias untuk nilai enumerasi yang mendasar yang sama. Jika Anda menggunakan Environment.SpecialFolder.Personal dengan cara ini, ubah kode Anda untuk meneruskan Environment.SpecialFolder.UserProfile sebagai gantinya (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)).

Untuk jeda lainnya, tindakan yang direkomendasikan adalah melakukan salah satu hal berikut:

  • Migrasikan file aplikasi Anda ke direktori yang sesuai.
  • Tambahkan pemeriksaan fallback untuk lokasi sebelumnya ke kode Anda.

API yang Terpengaruh