上一篇我们提到过程序集引用的问题,通过反编译工具可以很方便地看到他们的引用关系。如下图所示
那么是否有办法在代码中进行查询得到这些信息呢?答案是肯定的,我们可以通过下面的简单代码就实现了
我们主要用到了反射技术
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();
}
}
}