내 콘솔 앱이 실행중인 디렉터리를 어떻게 알 수 있습니까?


답변:


163

.exe 파일이있는 디렉토리를 가져 오려면 다음을 수행하십시오.

AppDomain.CurrentDomain.BaseDirectory

현재 디렉토리를 가져 오려면 :

Environment.CurrentDirectory

2
감사. C # .exe가 한 폴더에 있지만 다른 폴더에서 호출 될 때 도움이됩니다 (예 : 시스템 PATH에있을 때)
DeepSpace101

14
.NET Core의 경우 System.AppContext.BaseDirectory.
NightOwl888

15

응용 프로그램에 부여 된 권한에 따라 섀도 복사 가 적용 되는지 여부 와 기타 호출 및 배포 옵션에 따라 다른 방법이 작동하거나 다른 결과가 나올 수 있으므로 무기를 현명하게 선택해야합니다. 즉, 다음은 모두 상주하는 시스템에서 로컬로 실행되는 완전히 신뢰할 수있는 콘솔 응용 프로그램에 대해 동일한 결과를 생성합니다.

Console.WriteLine( Assembly.GetEntryAssembly().Location );
Console.WriteLine( new Uri(Assembly.GetEntryAssembly().CodeBase).LocalPath );
Console.WriteLine( Assembly.GetEntryAssembly().Location );
Console.WriteLine( Environment.GetCommandLineArgs()[0] );
Console.WriteLine( Process.GetCurrentProcess().MainModule.FileName );

필요한 정확한 권한을 확인하려면 위 구성원의 문서를 참조해야합니다.



3

.NET에서는 System.Environment.CurrentDirectory프로세스가 시작된 디렉토리를 가져 오는 데 사용할 수 있습니다 .
System.Reflection.Assembly.GetExecutingAssembly().Location현재 실행중인 어셈블리의 위치를 ​​알려줍니다 (현재 실행중인 어셈블리가 프로세스가 시작된 어셈블리의 위치와 다른 위치에서로드 된 경우에만 흥미 롭습니다).


1

Windows에서는 (Unix 등에 대해 확실하지 않음) 명령 줄의 첫 번째 인수입니다.

C / C ++에서 argv *의 항목을 실행합니다.

WinAPI-GetModuleFileName (NULL, char *, MAX_PATH)


예, .NET에서도 동일합니다. 첫 번째 인수는 항상 실행 파일의 전체 경로입니다.
Adam Neal

1

Application.StartUpPath;


일부 문서에 연결 하시겠습니까?
John Sheehan

0

.Net 핵심 콘솔 애플리케이션 프로젝트 이름이 DataPrep이라고 가정 해 보겠습니다.

프로젝트 기본 디렉토리 가져 오기 :

Console.WriteLine(Environment.CurrentDirectory);

출력 : ~ DataPrep \ bin \ Debug \ netcoreapp2.2

Get Project .csproj file directory:
string ProjectDirPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\"));
Console.WriteLine(ProjectDirPath);

출력 : ~ DataPrep \


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.