C# 各类方式获取应用程序路径
本文最后更新于 184 天前,其中的信息可能已经有所发展或是发生改变。

步骤

ConsoleApp1 调用 ClassLibrary1 的方法。

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

归纳即可得到下表。

Process.GetCurrentProcess().MainModule.FileName…\ConsoleApp1.exe
Assembly.GetCallingAssembly().Location…\ConsoleApp1.dll
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的程序集信息。
Assembly.Get***Assembly的区别_assembly.getassembly()-CSDN博客
作者:AlexSJC
本文采用 CC BY-NC-ND 4.0 许可协议
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇