共用方式為


Unix 上的 GetFolderPath 行為

從 .NET 8 開始,Unix 作業系統的 Environment.GetFolderPath 行為已變更。

變更描述

下表顯示針對各種特殊資料夾,每個 Unix 作業系統傳回的路徑值如何變更。

Linux

SpecialFolder 值 路徑 (.NET 7 和舊版) 路徑 (.NET 8 和更新版本)
MyDocuments $HOME 如果可用,則使用 XDG_DOCUMENTS_DIR;否則使用 $HOME/Documents
Personal $HOME 如果可用,則使用 XDG_DOCUMENTS_DIR;否則使用 $HOME/Documents

macOS

SpecialFolder 值 路徑 (.NET 7 和舊版) 路徑 (.NET 8 和更新版本)
MyDocuments $HOME NSDocumentDirectory ($HOME/Documents)
Personal $HOME NSDocumentDirectory ($HOME/Documents)
ApplicationData $HOME/.config NSApplicationSupportDirectory (程式庫/應用程式支援)
LocalApplicationData $HOME/.local/share NSApplicationSupportDirectory (程式庫/應用程式支援)
MyVideos $HOME/Videos NSMoviesDirectory ($HOME/Movies)

Android

SpecialFolder 值 路徑 (.NET 7 和舊版) 路徑 (.NET 8 和更新版本)
MyDocuments $HOME $HOME/Documents
Personal $HOME $HOME/Documents

導入的版本

.NET 8 Preview 1

中斷性變更的類型

此變更為行為變更

變更原因

先前的行為不正確,且不符合 Linux、macOS 和 Android 的使用者期望。

最常見的中斷是在 Unix 上將 System.Environment.SpecialFolder.Personal 傳遞至 Environment.GetFolderPath(Environment+SpecialFolder),以取得 $HOME 目錄 (Environment.GetFolderPath(Environment.SpecialFolder.Personal))。 Environment.SpecialFolder.PersonalEnvironment.SpecialFolder.MyDocuments 是相同基礎列舉值的別名。 如果您以此方式使用 Environment.SpecialFolder.Personal,請變更程式碼以改為傳遞 Environment.SpecialFolder.UserProfile 而非 (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile))。

針對其他中斷,建議的動作是執行下列其中一項動作:

  • 將應用程式的檔案移轉至適當的目錄。
  • 將先前位置的後援檢查新增至您的程式碼。

受影響的 API