Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Начиная с .NET 8 поведение Environment.GetFolderPath операционных систем Unix изменилось.
Описание изменения
В следующих таблицах показано, как изменяется возвращаемое значение пути для каждой операционной системы Unix для различных специальных папок.
Линукс
Значение 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 ) |
Андроид
Значение SpecialFolder | Путь (.NET 7 и более ранние версии) | Путь (.NET 8 и более поздние версии) |
---|---|---|
MyDocuments |
$HOME |
$HOME/Documents |
Personal |
$HOME |
$HOME/Documents |
Представленная версия
.NET 8( предварительная версия 1)
Тип разрушающего изменения
Причина изменения
Предыдущее поведение было неверным и не соответствовало ожиданиям пользователей для Linux, macOS и Android.
Рекомендуемое действие
Наиболее распространённая ошибка возникает, когда вы передаёте System.Environment.SpecialFolder.Personal в Environment.GetFolderPath(Environment+SpecialFolder) на Unix, чтобы получить каталог $HOME
(Environment.GetFolderPath(Environment.SpecialFolder.Personal)
).
Environment.SpecialFolder.Personal и Environment.SpecialFolder.MyDocuments являются псевдонимами для одного и того же базового значения перечисления. Если вы используете Environment.SpecialFolder.Personal таким образом, измените код, чтобы передать Environment.SpecialFolder.UserProfile вместо него (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
).
Для других случаев поломки рекомендуется выполнить одно из следующих действий:
- Перенос файлов приложения в соответствующий каталог.
- Добавьте резервную проверку для предыдущего местоположения в ваш код.