반응형
.NET에서 실행중인 exe의 경로를 얻는 가장 좋은 방법은 무엇입니까?
c : / dir에있는 프로그램 a.exe에서 텍스트 파일 c : /dir/text.txt를 열어야합니다. a.exe가 어디에 있는지 모르겠지만 text.txt는 항상 같은 경로에 있습니다. 텍스트 파일에 액세스 할 수 있도록 프로그램 자체에서 현재 실행중인 어셈블리의 이름을 얻는 방법은 무엇입니까?
편집 : a.exe가 Windows 서비스이면 어떻게됩니까? Windows 응용 프로그램이 아니므로 응용 프로그램이 없습니다.
미리 감사드립니다.
일반적으로 다음을 사용하여 내 응용 프로그램의 .exe가 포함 된 디렉터리에 액세스합니다.
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
string exePath = Application.ExecutablePath;
string startupPath = Application.StartupPath;
편집-응용 프로그램 개체를 사용하지 않고 :
string path = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase );
자세한 내용은 여기를 참조하십시오.
http://msdn.microsoft.com/en-us/library/aa457089.aspx
관심있는 어셈블리를 가져옵니다 (예 System.Reflection.Assembly a
: 변수에 할당 됨 ).
System.Reflection.Assembly.GetEntryAssembly()
, 또는typeof(X).Assembly
X
관심있는 어셈블리 에있는 클래스 의 경우 (Windows Forms의 경우 사용할 수 있음typeof(Program)
)
그런 다음 해당 어셈블리 a
가로드 된 파일의 경로를 가져 옵니다.
System.IO.Path.GetDirectoryName(a.Location)
Application
다른 답변에서 설명한 것처럼 Windows Forms 응용 프로그램 의 개체도 가능합니다.
VB.NET에서는 다음과 같은 방법으로 얻을 수 있습니다.
Assembly.GetEntryAssembly.Location
C #에서 :
Assembly.GetEntryAssembly().Location
peSHlr의 답변을 사용하면 NUnit에서 테스트 할 때도 잘 작동했습니다.
var thisType = typeof(MyCustomClass);
var codeLocation = Path.GetDirectoryName(thisType.Assembly.Location);
var codeLocationPath = Path.GetDirectoryName(codeLocation);
var appConfigPath = Path.Combine(codeLocationPath, "AppConfig");
MessageBox.Show("This program is located in: " + Environment.CurrentDirectory);
반응형
'programing tip' 카테고리의 다른 글
event.target을 사용하여 요소 상위 요소를 타겟팅 할 수 있습니까? (0) | 2020.11.20 |
---|---|
WPF ListView 비활성 선택 색상 (0) | 2020.11.20 |
Eclipse에서 Tomcat 서버 위치 속성이 회색으로 표시되는 이유 (0) | 2020.11.20 |
CURL을 사용하는 PHP의 SOAP 요청 (0) | 2020.11.20 |
jQuery-ajax POST에 대한 양식 값 가져 오기 (0) | 2020.11.20 |