Share via


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 미리 보기 1

호환성이 손상되는 변경의 형식

이 변경 사항은 동작 변경입니다.

변경 이유

이전 동작은 잘못되었으며 Linux, macOS 및 Android에 대한 사용자 기대치를 충족하지 못했습니다.

가장 일반적인 중단은 Unix에서 System.Environment.SpecialFolder.PersonalEnvironment.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