再谈CLR:如何通过代码获取程序集所引用的程序集信息
上一篇我们提到过程序集引用的问题,通过反编译工具可以很方便地看到他们的引用关系。如下图所示
那么是否有办法在代码中进行查询得到这些信息呢?答案是肯定的,我们可以通过下面的简单代码就实现了
我们主要用到了反射技术
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Assembly assembly = Assembly.GetExecutingAssembly(); Console.WriteLine("当前程序集所引用的程序集包括:"); foreach (var item in assembly.GetReferencedAssemblies()) { Console.WriteLine("名称:{0},版本:{1},公钥标记:{2}", item.Name, item.Version, Byte2String(item.GetPublicKeyToken())); } Console.Read(); } static string Byte2String(byte[] token) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < token.GetLength(0); i++) { sb.Append(string.Format("{0:x}",token[i])); } return sb.ToString(); } } }