AlexSJC
发布于 2024-01-24 / 4 阅读
0
0

C# 各类方式获取应用程序路径

#C#

步骤

ConsoleApp1 调用 ClassLibrary1 的方法。

在 CMD 运行,输出的内容如下图所示。

归纳即可得到下表。

Process.GetCurrentProcess().MainModule.FileName

…\ConsoleApp1.exe

Assembly.GetCallingAssembly().Location

…\ConsoleApp1.dl

Assembly.GetEntryAssembly().Location

…\ConsoleApp1.dll

Assembly.GetExecutingAssembly().Location

…\ClassLibrary1.dll

AppDomain.CurrentDomain.BaseDirectory

…\net8.0\

AppDomain.CurrentDomain.SetupInformation.ApplicationBase

…\net8.0\

AppContext.BaseDirectory

…\net8.0\

Directory.GetCurrentDirectory()

…\Administrator

Environment.CurrentDirectory

…\Administrator

C:\Users\Administrator 为工作目录(从中启动)

说明

Assembly.Get*Assembly()

Assembly.GetCallingAssembly 返回方法(该方法调用当前正在执行的方法)的 Assembly

Assembly.GetEntryAssembly 获取默认应用程序域中的进程可执行文件。 在其他的应用程序域中,这是由 ExecuteAssembly(String) 执行的第一个可执行文件。

Assembly.GetExecutingAssembly 获取包含当前执行的代码的程序集。

举例

如一个程序MyApp.exe,在程序中引用了MyDll.dll类库,而在MyDll.dll中有一个MyInfo方法,MyInfo调用了MyDll2.dll中的MyInfo2方法,那么结果如下: 

在MyApp.exe调用任何一个方法,获得的都是MyApp.exe的程序集信息。 

通过MyApp调用MyDll.MyInfo方法时,在MyDll.MyInfo中: 

  • 执行GetEntryAssembly,获得的是MyApp.exe的程序集信息。 

  • 执行GetExecutingAssembly,获得的是MyDll.dll的程序集信息。 

  • 执行GetCallingAssembly,获得的是MyApp.exe的程序集信息。 

通过MyDll的方法调用MyDll2.MyInfo2方法时: 

  • 执行GetEntryAssembly,获得的是MyApp.exe的程序集信息。 

  • 执行GetExecutingAssembly,获得的是MyDll2.dll的程序集信息。 

  • 执行GetCallingAssembly,获得的是MyDll.dll的程序集信息。

https://blog.csdn.net/taoqick/article/details/50837900


评论