再谈CLR:如何通过代码获取程序集所引用的程序集信息

上一篇我们提到过程序集引用的问题,通过反编译工具可以很方便地看到他们的引用关系。如下图所示

image

那么是否有办法在代码中进行查询得到这些信息呢?答案是肯定的,我们可以通过下面的简单代码就实现了

我们主要用到了反射技术

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();
        }


    }
}
 
image 
posted @   陈希章  阅读(625)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2009-03-19 在数据库恢复之前将数据库置为单用户模式
2009-03-19 SQL Server 存储过程调用和参数运用
点击右上角即可分享
微信分享提示