AppDomain.CurrentDomain.BaseDirectory 또는 System.Environment.CurrentDirectory를 사용해야합니까?
동일한 폴더에 두 개의 exe 파일이 있으며 exe1의 버튼에서 exe2를 실행할 수 있습니다. 오늘 나는 원격 (터미널 서비스) 세션을 통해 고객을 관찰하고 있었고 exe2는 '파일을 찾을 수 없음'오류를 실행하지 못했지만 확인했을 때 exe1은 동일한 디렉토리에있었습니다. 그래서 AppDomain.CurrentDomain.BaseDirectory 또는 System.Environment.CurrentDirectory 를 사용해야 합니까?
감사
응용 프로그램과 같은 디렉토리에서 파일을 찾으려면 AppDomain.CurrentDomain.BaseDirectory
올바른 선택입니다.
Environment.CurrentDirectory
응용 프로그램을 실행하는 과정에서 변경 될 수 있고 변경 될 값입니다. 예를 들어, 기본 매개 변수를 사용하여 WinForms의 OpenFileDialog는이 값을 파일이 선택된 디렉토리로 변경합니다.
AppDomain.CurrentDomain.BaseDirectory는 현재 응용 프로그램 도메인이로드 된 디렉터리를 반환합니다. System.Environment.CurrentDirectory는 현재 시스템 디렉터리를 반환합니다. 귀하의 경우 AppDomain.CurrentDomain.BaseDirectory가 최상의 솔루션입니다.
당신은 사용해야합니다 AppDomain.CurrentDomain.BaseDirectory
.
예를 들어 Windows 서비스 애플리케이션에서 :
System.Environment.CurrentDirectory
C : \ Windows \ system32를 반환합니다 .
동안
AppDomain.CurrentDomain.BaseDirectory
[Application.exe 위치]를 반환합니다.
주목해야 할 또 다른 중요한 요소 AppDomain.CurrentDomain.BaseDirectory
는 읽기 전용 속성이지만 Environment.CurrentDirectory
필요한 경우 다른 속성이 될 수 있다는 것입니다.
// Change the directory to AppDomain.CurrentDomain.BaseDirectory
Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;
내가 이해했듯이 BaseDirectory
. CurrentDirectory
프로그램 실행 과정에서 변경 될 수 있습니다.
Visual Studio 2010 테스트 프로젝트에서 테스트 설정 편집의 배포 옵션을 활성화하면 AppDomain.CurrentDomain.BaseDirectory가 TestResults \ Out 폴더 (bin \ debug가 아님)를 가리 킵니다. 그러나 기본 설정은 bin \ debug 폴더를 가리 킵니다.
여기에서 설득력있는 답을 찾았습니다.
AppDomain.CurrentDomain.BaseDirectory가 asp.net 앱에 "bin"을 포함하지 않는 이유는 무엇입니까?
나는 보통 다음과 같은 것을 사용합니다.
string AppPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
AppPath = AppPath.Replace("file:\\", "");
나는 또한 내가 사용하는 동안이 며칠을 겪었습니다.
Environment.CurrentDirectory
프로덕션 서버에서 문제가 발생했지만 로컬 서버에서는 잘 작동했기 때문에
그래서 나는
System.AppDomain.CurrentDomain.BaseDirectory;
그리고 그것은 두 환경 모두에서 저에게 효과적이었습니다.
그래서 그들 모두가 말했듯이 우리는 항상
System.AppDomain.CurrentDomain.BaseDirectory;
현재 도메인 디렉토리에서 경로를 확인합니다.
더 많은 정보를 찾으십시오
'developer tip' 카테고리의 다른 글
HTTPS를 통한 일반 텍스트 비밀번호 (0) | 2020.10.04 |
---|---|
PHP 스크립트에서 CSV 파일을 만들고 다운로드하는 방법은 무엇입니까? (0) | 2020.10.04 |
Emacs-호출시 오류 (서버 시작) (0) | 2020.10.04 |
어떤 C ++ 표준 라이브러리 래퍼 함수를 사용하십니까? (0) | 2020.10.04 |
현재 버전의 ASP.NET MVC를 확인하는 방법은 무엇입니까? (0) | 2020.10.04 |