软件安装的点过多,有时候为特定某些点更新程序,而其它可能不更新,为了便于维护就加了个对话框,来显示当前软件的所有程序集版本,方便随时查看,或者将信息上传到服务器便于统一管理。
C#生成的.net DLL程序集与C++成生的DLL共享库作用是一样的,但其本质是不同的,C#生成的DLL包含的是中间语言IL,其实只是与C#更低级一些的高级语言,并不是机器码,而C++生成的DLL动态库却是机器码,这导致两者的表现也不同,例如使用System.Diagnostics.Process.Modules得不到.net 动态库的信息,而只能得到主程序模块,代码为:
foreach (ProcessModule m in Process.GetCurrentProcess().Modules) {
FileInfo f = new FileInfo(m.FileName);
sb.AppendFormat("{0}/t/t{1}/t/t{2}/t/t({3})"
, m.ModuleName, m.FileVersionInfo.FileVersion.ToString()
, f.LastWriteTime, m.FileName);
sb.AppendLine();
}
而如果想获取.NET程序集则需要用别的方法:
System.Reflection.Assembly ma = System.Reflection.Assembly.GetEntryAssembly();
FileInfo fi = new FileInfo(ma.Location);
FileVersionInfo mfv = FileVersionInfo.GetVersionInfo(ma.Location);
System.Reflection.Module mm = ma.ManifestModule;
sb.AppendFormat("{0}/t {1}/t {2}/t {3}({4})",
mm.Name,
ma.GetName().Version, // 这个是在工程的属性里设置的Assembly Version
fi.LastWriteTime, ma.Location
, mfv.FileVersion); // 这个是在工程的属性里设置的File Version
sb.AppendLine();
foreach (var aName in ma.GetReferencedAssemblies()) {
Assembly a = Assembly.Load(aName);
FileInfo f = new FileInfo(a.Location);
FileVersionInfo fv = FileVersionInfo.GetVersionInfo(a.Location);
System.Reflection.Module m = a.ManifestModule;
sb.AppendFormat("{0}/t {1}/t {2}/t {3}({4})"
, m.Name, a.GetName().Version, f.LastWriteTime, a.Location, fv.FileVersion);
sb.AppendLine();
}
通过反射机制,首先获取主程序集,然后获取它引用的程序集的信息。
分享到:
相关推荐
如何获取程序集版本信息实例C#.net源代码编写
c# 获取程序集版本号,自动增加“内部版本号”和“修订号
通过MarkupExtension 提供程序集类型
C#获取、设置编译版本号、编译时间使用案例,C#获取程序集自动增加的版本号和编译时间,希望帮到有需要的人
如何获取程序集类型成员例子C#.net源代码编写
C#中通过Assembly类可以访问程序集信息. 1.允许访问给定程序集的元元素,包含可以加载和执行程序集的方法; 2.加载程序集:使用静态方法Assembly.Load(程序集名称)或Assembly.LoadFrom(程序集完整路径名); 3.属性:...
如何获取程序集反射内容例子C#.net源代码编写
C# 获取程序集版本、文件版本的实现代码。
C#获得程序的GUID,在网上找了很久,没有找到。
C#中通过Assembly类可以访问程序集信息. 1.允许访问给定程序集的元元素,包含可以加载和执行程序集的方法; 2.加载程序集: 使用静态方法Assembly.Load(程序集名称) 或Assembly.LoadFrom(程序集完整路径名); 3....
程序集、反射和特性小示例反射实现的接口 反射方法参数和返回值
本文实例讲述了C#获取程序文件相关信息的方法,分享给大家供大家参考。 具体实现方法如下: using System.Reflection; using System.Runtime.CompilerServices; // // 有关程序集的常规信息是通过下列 // 属性集...
c#.net常用函数和方法集 C#对注册表的操作 choosesubject n个数排序 unknown 猜数字 猜数字个人版 词频统计 第二种方法求一系列数的和 递归方法求阶乘字符串反转 订票 发奖学金 构造函数属性 关闭特定程序 何意数...
获取同一个程序集下一个类的所有子类,及类的相关信息,并且将这些类之间的层次关系以树状形式呈现出来
clrinject将C#EXE或DLL程序集注入任何其他进程的CLR运行时和AppDomain中。 然后,注入的程序集可以访问注入者进程的类的静态实例,从而影响其内部状态。 clrinject将C#EXE或DLL程序集注入任何其他进程的CLR运行时...
主要介绍了C#中的程序集和反射介绍,程序集包含资源文件,类型元数据、IL代码,每个程序集都有自己的名称、版本等信息,反射就是动态获取程序集中的元数据的功能,需要的朋友可以参考下
c#.net常用函数和方法集.txt C#对注册表的操作.txt choosesubject.txt n个数排序.txt unknown.txt 一到一百之间的素数.txt 三个数排序.txt 三个数最大数.txt 九九乘法表.txt 以二进制读取文本文件.txt 何意数排序....
C#获取页面输出的内容 程序集:System.Windows.Forms(在 system.windows.forms.dll 中)