元数据描述

.NET Framework 部署目标

  DLL hell     安装一个程序,破坏了另一个程序
  安装的复杂性   设计的东西太多
  涉及安全性      自动下载

将类型生成到模块中

使用csc.exe 进行编译
  /out: 生成可执行文件
  /t:exe 生成的文件是Win32控制台应用程序类型
  /r: 应用库
  /nostdlib 不自动应用MSCorLib.dll程序集
响应文件,一组命令的集合使用@指令引用文件,就是为了简便上面的操作
  C#编译器支持多个响应文件,在.NET Framework 安装时会安装一个CSC.rsp文件,
    >然后编译器会汇总本地的和全局的响应文件,有冲突,以本地为主

元数据的概述

  现在知道创建的是什么类型的PE文件
    托管的PE文件由4个部分组成

      PE32(+)  标准可执行文件头

      CLR头          

            >major and minor 主次版本号,
            >flag
            >MethodDef token(模块的入口方法)
            >元数据表的大小和编译,可以查看CorHdr.h头文件

      元数据         

          >定义表
            >ModuleDef 总是包含对模块进行标识的一个记录项
            >TypeDef 模块定义的每个类型在这个表中都有一个记录项
            >MethodDef 模块定义的每个方法在这个表中都有一个记录项
            >FieldDef 模块定义的每个字段在这个表中都有一个记录项
            >ParamDef 模块定义的每个参数在这个表中都有一个记录项
            >PropertyDef 模块定义的每个属性在这个表中都有一个记录项
            >EventDef 模块定义的每个事件在这个表中都有一个记录项
          >引用表
            >AssemblyRef
            >ModuleRef 实现该模块所引用的类型的每个PE模块在这个表中都有一个记录项
            >TypeRef 该模块的每个类型在这个表中都有一个记录项,包含类型的名称和一个引用
            >MemberRef 模块引用的每个成员在这个表中都有一个记录项
          >清单表

      IL   可使用ILDasm查看

 

将模块合并成程序集

  程序集:是一个或多个类型定义文件以及资源文件的集合
    >程序集是进行重用,版本控制和应用安全性设置的基本单位
  清单元数据表(manifest)
    >AssemblyDef 程序集
    >FileDef 作为程序集一部分的每个PE文件和资源文件在这个表都有一个记录项
    >MainfestResourceDef
    >ExportedTypesDef

        

posted @ 2016-12-14 10:51  夏风微凉  阅读(243)  评论(0编辑  收藏  举报