在.net平台,每个程序集都可以设置详细的自定义的程序集信息,比如版本、公司、说明、版权、商标等等。那么,如何在c#程序中,通过代码实现对另一个程序集信息的获取呢,方法是有得,还比较简单
在命名空间System.Reflection下面有个Assembly类,可以专门处理程序集相关的操作,获取程序集信息当然不在话下。首先要加载程序集文件、然后通过GetCustomAttribute成员函数获得程序集的自定义属性。下面代码以获取程序集版本、公司和描述信息为例:
- string ver,compant,desc;
- //加载程序集文件
- Assembly assembly = Assembly.LoadFile("d:\\test.dll");
- //获取版本
- ver = assembly.GetName().Version.ToString();
- //获取公司
- compant = ((AssemblyCompanyAttribute)Attribute.GetCustomAttribute(assembly, typeof(AssemblyCompanyAttribute))).Company;
- //获取描述说明
- desc = ((AssemblyDescriptionAttribute)Attribute.GetCustomAttribute(assembly, typeof(AssemblyDescriptionAttribute))).Description;
如上,即可
LoadFile加载程序集到Assembly实例对象后,还可以进行其他操作,比如调用程序集内部的一些类和方法。不过这样有个问题,就是程序集被LoadFile方法加载后,是无法单独对程序集进行卸载的,这样程序集文件dll本身就被锁定,无法覆盖或删除操作。后面我会继续对动态加载和卸载方法进行一些描述。