• .Net程序集(.exe/.dll)文件剖析


    我们在用Visual Studio进行开发的时候,经常会跟dll或者exe的文件打交道,懂一点计算机的同学会想,dll文件里面存的应该是二进制吧,它不能直接运行,不过可以被exe的程序调用。懂点.Net的同学:哦,原来dll文件中存放的是经过编译后的MSIL,运行时,它会由一个叫JIT的编译器再编译为适合本地运行的二进制,供程序运行。那么今天,作为懂得不是一点点的我们,就应该了解这里面到底是些什么东西,这样会更好的理解.Net框架。已经不记得是在哪里记下的哪位大神笔记,贴在自家墙上的,如今拿出来晒晒,只为跟众多园友们分享分享!

    如图所示:

                                     

    在.Net Framework下,一个dll/exe文件也叫一个程序集,可以把它看作是一个程序的集合,因为程序要运行,除了必要的代码以外,可能牵扯到相关的图像,视频等等,而程序集,就是这些东西了一个集合。

    下面对图中的名词一一介绍:

    PE/COFFWindows 操作系统能加载并执行.dll和.exe文件,是因为它能够理解PE/COFF格式.PE/COFF( Micorsoft Windows Protable Executable/Commom Object File Format )——可移植可执行/通用对象文件格式。PE/COFF头包含了供操作系统查看和利用的信息,如文件指针等等。

    CLR 头程序集中包含的CLR代码,并不是计算机可以直接运行的,还需要进行即时编译。所以,需要将编译环境运行起来,因此,PE/COFF之后就是CLR头,告诉操作系统这个文件是一个.Net程序集,区别与其他类型的可执行程序。

    清单相当于一个目录,描述了程序集本身的信息,如程序集标识(版本号,名称等),资源(Resources),组成文件。

    元数据:描述了程序集所包含的内容,包括:程序集包含的模块、类型、成员、可见性等。注意:元数据并不包含类型的实现,类似于C/C++中的.h头文件,在.Net中查看元数据的过程就叫“反射”。

    CIL代码:无数据中类型的实现,包括方法体、字段等,类似于C++中的.cpp文件。

    资源文件:如音乐,图片等。

     
     
     
    标签: .Net程序集
  • 相关阅读:
    hibernate 高并发下遇到的大坑
    Spring Cloud微服务架构企业中的应用
    spring cloud学习-hystrix
    点评CAT接入手册
    centOS6.5 修改catalina.sh使用crontab自动切割日志tomcat8
    mariaDB安装报错
    linux安装rap需要的软件
    mariaDB的innodb恢复报错解决
    NFinal学习笔记 02—NFinalBuild
    NFinal 视图—用户控件
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2891902.html
Copyright © 2020-2023  润新知