[C#] 프로그램 실행 경로


Development note/C#  2019. 6. 13. 23:03

안녕하세요. 명월입니다.

 

이 글은 C#에서 프로그램 실행 경로(Path)에 대한 글입니다.

 

프로그램을 만들때 파일을 읽어 드리거나 쓰는 경우가 많습니다. 그럴 때 경로를 어떻게 설정하는 가에 대해 고민이 많습니다.

별 고민 없이 하는 방법은 절대 경로로 만들면 아주 간단합니다만 사람마다 사용하는 환경이 다 다르기 때문에 배포 프로그램을 만든다고 할 때 절대 경로는 사용할 수 없습니다.

 

그럼 결국은 상대 경로를 사용해야 하는데 상대 경로는 어떤 기준으로 만드나 할 때, 보통 프로그램이 실행되는 위치를 기준으로 작성하는 경우가 많습니다.

 

그 때 실행하는 위치를 어떻게 가져올까하는 것입니다.

System.Environment.CurrentDirectory

AppDomain.CurrentDomain.BaseDirectory

위 방법 어느 방법으로 해도 결과는 같습니다.

그런데 차이가 뭐라고하면 CurrentDirectory의 경우는 여러 DLL를 낄 경우 데이터가 바뀔 수도 있다고 하네요. 정확한 것은 AppDomain.CurrentDomain.BaseDirectory 이게 맞다고 합니다.

 

참조 - https://stackoverflow.com/questions/674857/should-i-use-appdomain-currentdomain-basedirectory-or-system-environment-current

 

구성 파일을 읽어 드릴 때는 다음 소스를 사용합니다.

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

이건 조사하다가 저도 처음 알았네요...

 

참조 - https://docs.microsoft.com/en-us/dotnet/api/system.appdomain.basedirectory?view=netframework-4.8

 

이 실행 경로를 취득하는 소스는 상당히 매우 많이 사용하는 경우가 많습니다.

 

여러 사람들이 도움이 되었으면 합니다.