2009-03-23 4 views
66

같은 폴더에 두 개의 exe 파일이 있습니다. exe1의 단추에서 exe2를 실행할 수 있습니다. 오늘 원격 (터미널 서비스) 세션에서 고객을 관찰하고 exe2가 '파일을 찾을 수 없음'오류를 실행하지 못했습니다. 그러나 우리가 검사했을 때 exe1은 같은 디렉토리에있었습니다. 따라서 AppDomain.CurrentDomain.BaseDirectory 또는 System.Environment.CurrentDirectory을 사용해야합니까?AppDomain.CurrentDomain.BaseDirectory 또는 System.Environment.CurrentDirectory를 사용해야합니까?

감사

+0

어떻게 터미널에서 당신의 exe1을 실행하는 @Jade M ? –

+0

'string.GetFullPath (path)'가'CurrentDomain.BaseDirectory'보다는'Environment.CurrentDirectory'를 사용한다는 사실을보고 두 개의 센트를 추가하고 싶습니다. – JBSnorro

답변

6

내가 알고있는 것처럼, 당신이 BaseDirectory를 사용해야합니다. CurrentDirectory은 프로그램 실행 과정에서 변경 될 수 있습니다.

145

응용 프로그램과 같은 디렉토리에있는 파일을 찾으려면 AppDomain.CurrentDomain.BaseDirectory이 올바른 선택입니다.

Environment.CurrentDirectory은 응용 프로그램 실행 과정에서 변경 될 수있는 값입니다. 예를 들어, 기본 매개 변수를 사용하여 WinForms의 OpenFileDialog는이 값을 파일이 선택된 디렉토리로 변경합니다.

  string AppPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); 
      AppPath = AppPath.Replace("file:\\", ""); 
+6

나는 이것에 대해 두 번 이상 투표 할 수 있기를 바란다. – David

+0

OpenFileDialog를 표시하기 위해 button1을 사용한 다음 Environment.CurrentDirectory를 표시하기 위해 button2를 사용했지만 여전히 디버그 폴더를 표시합니다. 왜 그런가요? –

2

나는 보통 같은 것을 사용합니다. System.Environment.CurrentDirectory는 현재 시스템 디렉터리를 반환합니다. 귀하의 경우에는 AppDomain.CurrentDomain.BaseDirectory가 최상의 솔루션입니다.

14

해당 AppDomain.CurrentDomain.BaseDirectory은 현재 응용 프로그램 도메인이로드 된 곳에서 디렉토리를 반환

+1

명확하게 말하면 System.Environment.CurrentDirectory는 현재 (프로세스 관련) _working_ 디렉터리를 반환합니다. –

10

당신은 AppDomain.CurrentDomain.BaseDirectory를 사용해야합니다.

윈도우 서비스 응용 프로그램의 예를 들면 : 응용 프로그램을 반환합니다

AppDomain.CurrentDomain.BaseDirectory 동안 \ WINDOWS \ system32를 :

System.Environment.CurrentDirectoryC를 반환합니다.exe 인 위치]

주목해야 할 또 다른 중요한 요소는 필요한 경우 Environment.CurrentDirectory 다른 것을 할 수 있지만 AppDomain.CurrentDomain.BaseDirectory이 읽기 ​​전용 속성이 있다는 것이다 :

// Change the directory to AppDomain.CurrentDomain.BaseDirectory 
Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory; 
0

내가 사용되면서 또한, 다시이 몇 일을 겪었습니다

이 나에게 프로덕션 서버에 문제를주고 있었다하지만 내 로컬 서버와 함께 잘 작동되면서
Environment.CurrentDirectory 

,

그래서 시도해 보니

System.AppDomain.CurrentDomain.BaseDirectory; 

그리고 환경 모두에서 나를 위해 일했습니다. 그들 모두가 말한대로 경로에 대한 현재 도메인 디렉토리를 검사로

그래서, 우리는 항상

System.AppDomain.CurrentDomain.BaseDirectory; 

으로 가야한다.

자세한 내용은 봐 가지고

Could not find a part of path error on server

관련 문제