元数据概述

元数据是由几个表构成的二进制数据块。有三种表,分别是定义表(definition table)、引用表(reference table)和清单表(manifest table)

1,常用的元数据定义表


元数据定义名称


说明


ModuleDef


总是包含对模块进行标识的一个记录项;

包含:模块文件名,扩展名(不含路径),模块版本ID(编译器创建的GUID)


TypeDef


模块定义的每个类型在这个表中都有一个记录项;

包含:类型的名称,基类型,标志(public等),索引(索引指向MethodDef表中该类型的方法,FieldDef表中该类型的字段,PropertyDef表中该类型的属性,EventDef表中该类型的事件)


MethodDef


模块定义的每个方法在这个保重都有一个记录项;

包含:方法的名称,标志,签名,方法的IL代码在模块中的偏移量。每个记录项还引用了ParamDef表中的一个记录项,后者包括与方法参数有关的更多信息


FieldDef


模块定义了每个字段在这个表中都有一个记录项;

包含:标志,类型,名称


ParamDef


模块定义的每个参数在这个表中都有一个记录项;

包含:标志(in,out,retval等),类型,名称


PropertyDef


模块定义的每个属性在这个表中都有一个记录项;

包含:标志,类型,名称


EventDef


模块定义的每个事件在这个表中都有一个记录项;

包括:标志,名称

2,常用的引用元数据表


引用元数据的名称


说明


AssemblyRef


模块引用的每个程序集在这个表中都有一个记录项;

包含:程序集名(不包含路径和扩展名),版本号,语言文化,公钥token,标志(flag),哈希值


ModuleRef


实现该模块所引用的类型的的每个PE模块在这个表中都有一个记录项;

包含:模块的文件名,扩展名(不含路径)


TypeRef


模块引用的每个类型在这个表中都有一个记录项;

包含:类型的名称,一个引用(指向类型的位置)


MemberRef


模块引用的每个成员(字段和方法以及属性方法和事件方法)在这个表中都有一个记录项;

包含:成员的名称,签名,并指向对成员进行定义的那个类型的TypeRef记录项

3,清单元数据表


清单元数据表名称


说明


AssemblyDef


如果模块标识的是程序集,这个元数据表就包含单一记录项来列出程序集名称(不含路径和扩展名),版本(major,minor,build和revision),语言文化(culture),一些标志(flag),哈希算法以及发布者公钥(可为null)


FieldDef


作为程序集一部分的每个PE文件和资源文件在这个表中都有一个记录项(清单本身所在的文件除外,该文件在AssemplyDef表的单一记录项中列出);

包含:文件名,扩展名(不含路径),哈希值和一些标志(flags);

如果程序集只包含它自己的文件,FileDef表将无记录


ManifestResourceDef


作为程序集一部分的每个资源在这个表中都有一个记录项;

包含:资源名称,标志,FileDef表的一个索引,偏移量(指出资源在PE文件中的起始位置)


ExportedTypesDef


从程序集的所有PE模块中导出的每个public类型在这个表中都有一个记录项;

包含:类型名称,FileDef表的一个索引,TypeDef表的一个索引

4,利用ILDasm.exe查看元数据

视图-》元信息-》显示

时间: 2024-10-14 11:02:30

元数据概述的相关文章

02.生成、打包、部署和管理应用程序及类型

使用csc.exe,通过命令行来编译源代码,生成IL代码,如下 csc.exe /out:Program.exe /t:exe /r:MSCoreLib.dll Program.cs 意义:指示C#编译器生成一个名叫Program.exe的可执行文件 MSCoreLib.dll是一个特殊的文件,它包含所有的核心类型:Byte,Char,String,Int32等等,因为操作非常频繁,C#编译器会自动引用该程序集,所以上述的命令行代码可以省略/r开关,也可以使用/nostdlib开关,不去引用该程

第2章 生成、打包、部署和管理应用程序及类型

2.1 .Net Framework部署目标 2.2将类型生成到模块中 本节讨论如何将包含多个类型的源代码文件生成为一个可部署的文件. System. Console是Microsoft已经实现好的一个类型,用于实现这个类型的各个方法的IL代码存储在MSCorLib.dll文件中. 2.3元数据概述 Program.exe中到底包含什么内容呢? 一个托管PE文件有4个部分组成:PE32(+)头.CLR头.元数据以及IL. PE32(+)头是Windows要求的标准信息, 元数据是一个二进制数据块

第二章 生成、打包、部署和管理应用程序及类型

1. 概述 本章重点解释如何生成仅供自有应用程序使用的程序集. 2. 名词解释 ① 响应文件:是一个文本文件(扩展名rsp),包含一组编译器命令行开关.执行CSC.exe时可以直接读取并应用这些开关. 3. 主要内容 3.1 部署目标 ① 解决 DLL hell. ② 解决 安装时的复杂性. ③ 增强 安全性. 3.2 将类型生成到模块中 ① CSC.exe 3.3 元数据概述 元数据是一个二进制数据块,由几个表组成.这些表分为三个类别:定义表.引用表和清单表. ① 常用的定义表:ModuleD

第二章 生成丶打包丶部署和管理应用程序及类型

目录: 2.1 .NET Framerwork部署目标 2.2 将类型生成到模块中 2.3 元数据概述 2.4 将模块合并成程序集 2.5 程序集版本资源信息 2.6 语言文化 2.7 简单应用程序部署(私有部署的程序集) 2.8 简单管理控制(配置) 2.1 .NET Framework部署目标 Windows 多年来一直因为不稳定和过于复杂而口碑不佳. 有及方面原因.首先所有应用程序都要使用动态链接库(Dynamic-Link Library,DLL) 1.安装新应用程序时,它可能莫名奇妙破

重温CLR(二)生成、部署以及程序集

将类型生成到模块中 class Program { static void Main(string[] args) { Console.WriteLine("Hi"); } } 该应用程序定义了program类型,其中有名为Main的public static方法.Main中引用了另一个类型System.Console.System.console是Microsoft实现好的类型,用于实现这个类型的各个方法的IL代码存储在MSCorLib.dll文件中.总之,应用程序定义了一个类型,还

[转载]SharePoint 2013搜索学习笔记之搜索构架简单概述

Sharepoint搜索引擎主要由6种组件构成,他们分别是爬网组件,内容处理组件,分析处理组件,索引组件,查询处理组件,搜索管理组件.可以将这6种组件分别部署到Sharepoint场内的多个服务器上,组成适合需求的Sharepoint搜索场,搜索场的体系结构设计主要参考量是爬网内容量,微软根据爬网内容量不同将搜索场分为大型场,中型场和小型场,更多详细信息可参考: SharePoint Server 2013 中的搜索概述和在SharePoint Server 2013 中规划企业搜索体系结构.

团队博客:软件单元测试概述

1.几个相关的概念 白盒测试——把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人员是公开的. 回归测试——软件或环境的修复或更正后的“再测试”,自动测试工具对这类测试尤其有用. 单元测试——是最小粒度的测试,以测试某个功能或代码块.一般由程序员来做,因为它需要知道内部程序设计和编码的细节. JUnit ——是一个开发源代码的Java测试框架,用于编写和运行可重复的测试.他是用于单元测试框架体系xUnit的一个实例(用于java语言).主要用于白盒测试,回归测试. 2.单元测试概

[MEF]第03篇 MEF延迟加载导出部件及元数据

一.演示概述 此演示介绍了MEF的延迟加载及元数据相关的内容. 在实际的设计开发中,存在着某些对象是不需要在系统运行或者附属对象初始化的时候进行实例化的, 只需要在使用到它的时候才会进行实例化,这种方式就可以理解为对象的迟延初始化,或者叫迟延加载. 对于提升系统的性能大有裨益呀! 另外,还可以为导出的部件添加元数据,以便在代码中提供更加灵活的扩展办法,或获取更多的相关信息.甚至,还可以自定义元数据的接口,无论是定义还是使用都非常的方便. 相关下载(屏幕录像):http://yunpan.cn/c

Hadoop学习笔记_2_Hadoop源起与体系概述[续]

Hadoop源起与体系概述 Hadoop的源起--Lucene Lucene是Doug Cutting开创的开源软件,用java书写代码,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎 早期发布在个人网站和SourceForge,2001年年底成为apache软件基金会jakarta的一个子项目 Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎 对于大数据的