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.Personal 和 Environment.SpecialFolder.MyDocuments 是相同基礎列舉值的別名。 如果您以此方式使用 Environment.SpecialFolder.Personal,請變更程式碼以改為傳遞 Environment.SpecialFolder.UserProfile 而非 (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
)。
針對其他中斷,建議的動作是執行下列其中一項動作:
- 將應用程式的檔案移轉至適當的目錄。
- 將先前位置的後援檢查新增至您的程式碼。