.NET CF获取当前dll及其调用程序的文件名和完全路径

本文介绍了在DLL中如何区分并获取自身与调用程序的文件名及路径信息,利用System.Reflection.Assembly的不同方法如GetExecutingAssembly与GetCallingAssembly实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  在dll中有时需要使用主调用程序中的资源,这就要正确获取调用程序的文件名及其路径等信息。这需要和调用dll本身的文件名和路径区分开来!

 

    这就牵扯到System.Reflection.Assembly程序集类使用了。

     GetExecutingAssembly : 获取包含当前执行的代码的程序集

     GetCallingAssembly : 返回调用当前正在执行的方法的方法的 System.Reflection.Assembly 

 

    下面为某个dll中的静态函数,注意区别:

  1. public static void GetName()
  2. {
  3.     // 当前dll相关程序集名
  4.     Debug.WriteLine(Path.GetFileName(Assembly.GetExecutingAssembly().GetName().CodeBase));
  5.     Debug.WriteLine(Assembly.GetExecutingAssembly().GetModules()[0].Name);
  6.     Debug.WriteLine(Assembly.GetExecutingAssembly().ManifestModule.Name);
  7.     Debug.WriteLine("");
  8.     Debug.WriteLine(Assembly.GetExecutingAssembly().GetName().CodeBase);
  9.     Debug.WriteLine(Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName);
  10.     Debug.WriteLine(Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName);
  11.     Debug.WriteLine("");
  12.  
  13.     // 调用程序的相关程序集名称
  14.     Debug.WriteLine(Path.GetFileName(Assembly.GetCallingAssembly().GetName().CodeBase));
  15.     Debug.WriteLine(Assembly.GetCallingAssembly().GetModules()[0].Name);
  16.     Debug.WriteLine(Assembly.GetCallingAssembly().ManifestModule.Name);
  17.     Debug.WriteLine("");
  18.     Debug.WriteLine(Assembly.GetCallingAssembly().GetName().CodeBase);
  19.     Debug.WriteLine(Assembly.GetCallingAssembly().GetModules()[0].FullyQualifiedName);
  20.     Debug.WriteLine(Assembly.GetCallingAssembly().ManifestModule.FullyQualifiedName);
  21. }

 

    上面的静态函数在TestClass类中,然后在调用程序中调用该静态函数,调用程序为“GetApplicationName.exe”,如下:

  1. TestClass.GetName();

 

    观察结果,如下: 

  1. TestDll.dll
  2. TestDll.dll
  3. TestDll.dll
  4.  
  5. \Program Files\GetApplicationName\TestDll.dll
  6. \Program Files\GetApplicationName\TestDll.dll
  7. \Program Files\GetApplicationName\TestDll.dll
  8.  
  9. GetApplicationName.exe
  10. GetApplicationName.exe
  11. GetApplicationName.exe
  12.  
  13. \Program Files\GetApplicationName\GetApplicationName.exe
  14. \Program Files\GetApplicationName\GetApplicationName.exe
  15. \Program Files\GetApplicationName\GetApplicationName.exe

 

  还有一个办法,但是只能获取调用程序的文件名,不能获取完全路径,那就是通过AppDomain.CurrentDomain.FriendlyName获取,如下:

  1. Debug.WriteLine(AppDomain.CurrentDomain.FriendlyName);

    结果:

  1. GetApplicationName.exe

    

    你还可以参考这篇文章: 为Windows mobile编写设计友好的控件,里面也对AppDomain.CurrentDomain.FriendlyName做了介绍。

 

代码下载:

 GetApplicationName.rar

 

 

转载于:https://www.cnblogs.com/Lisen/archive/2009/12/24/1631446.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值