programing tip

.NET에서 실행중인 exe의 경로를 얻는 가장 좋은 방법은 무엇입니까?

itbloger 2020. 11. 20. 08:42
반응형

.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


Application.ExecutablePath

Application.StartupPath


관심있는 어셈블리를 가져옵니다 (예 System.Reflection.Assembly a: 변수에 할당 됨 ).

  • System.Reflection.Assembly.GetEntryAssembly(), 또는
  • typeof(X).AssemblyX관심있는 어셈블리 에있는 클래스 의 경우 (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);

참고 URL : https://stackoverflow.com/questions/1222190/what-is-the-best-way-to-get-the-executing-exes-path-in-net

반응형