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

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



답변

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

AppDomain.CurrentDomain.BaseDirectory

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

Environment.CurrentDirectory


답변

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

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 );

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


답변

Path.GetDirectoryName (Assembly.GetExecutingAssembly (). Location)


답변

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


답변

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

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

WinAPI-GetModuleFileName (NULL, char *, MAX_PATH)


답변

Application.StartUpPath;


답변

.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 \