C#에서 실행되는 폴더 알아 내기
(윈도우 서비스, 테스트 프로젝트, ...)
윈도우 서비스나 테스트 프로젝트에서 실행을 하면 내가 코딩한 DLL이 위치하는 폴더와 실제 실행되는 프로세스의 위치가 상이한 경우가 발생할 수 있다. 이럴경우 기대한 경과와 다르게 에러가 발생할 수 있다. 예로 파일을 읽어 오는 부분이나 환경설정을 읽어 오는 부분에서 경로가 맞지 않아 에러가 발생할 수 있다. 아래 코드와 같이 실행되는 프로세스나 어셈블리의 위치를 알아 내는 방법이 몇가지로 제공을 하고 있다.
var path1 = Environment.CurrentDirectory; var path2 = Directory.GetCurrentDirectory();
var path3 = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName; var path4 = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); var path5 = Thread.GetDomain().BaseDirectory; var path6 = AppDomain.CurrentDomain.BaseDirectory;
[코드1] 폴더 위치 가져오기
위 "코드1"에서와 같이 폴더를 알아 낼 수 있지만 path1과 path2는 실행되는 프로세스를 중심으로 폴더를 알아내고 path3 ~ path6은 어셈블리를 기준으로 폴더를 알아내는 구조로 되어 있다.
위와 같은 코드를 윈도우 서비스에서 실행하면 아래와 같은 폴더의 위치가 달라지게 된다.
path1 : C:\Windows\System32
path2 : C:\Windows\System32
path3 : C:\User\xxxx\Visual Studio\Project\xxxx
path4 : C:\User\xxxx\Visual Studio\Project\xxxx
path5 : C:\User\xxxx\Visual Studio\Project\xxxx
path6 : C:\User\xxxx\Visual Studio\Project\xxxx
위와 같이 값을 확인 할 수 있을 것이다.
필요에 따라 값을 가져오는 방법을 달리 하여 가져오면 될 것이다.
'.Net Framework' 카테고리의 다른 글
인터넷에서 프로그래밍 정보 얻는 사이트 - 영어 사이트 (0) | 2014.01.06 |
---|---|
C# AppDomain에서 DataDirectory 세팅하기 (0) | 2014.01.05 |
[C#] Windows 7 이후 추가된 Task Bar에서 Application Title 변경 하기 #1 - JumpList, Taskbar, Application Title (2) | 2013.10.21 |
Visual Studio Magagine - Windows 8, Visual Studio, HTML5 & Javascript Tutorials (0) | 2013.10.18 |
Visual Studio 2012 Update 4 Announced (0) | 2013.10.15 |