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 (Library/Application Support) |
LocalApplicationData |
$HOME/.local/share |
NSApplicationSupportDirectory (Library/Application Support) |
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 で $HOME
ディレクトリを取得するために System.Environment.SpecialFolder.Personal を Environment.GetFolderPath(Environment+SpecialFolder) に渡す場合です (Environment.GetFolderPath(Environment.SpecialFolder.Personal)
)。 Environment.SpecialFolder.Personal と Environment.SpecialFolder.MyDocuments は、基になる同じ列挙値の別名です。 この方法で Environment.SpecialFolder.Personal を使用している場合は、代わりに Environment.SpecialFolder.UserProfile を渡すようにコードを変更します (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
)。
その他の中断に対する推奨アクションは、次のいずれかの操作を行うことです。
- アプリケーションのファイルを適切なディレクトリに移行します。
- 前の場所のフォールバック チェックをコードに追加します。
影響を受ける API
.NET