我正在学习.NET框架并阅读元数据和清单。
问:那么表示元数据是不是很明显?“元数据是关于数据的数据,而清单是关于汇编的数据!”
然后它有什么不同?
答案 0 :(得分:14)
Manifest维护有关程序集的信息 像版本,名称区域设置和可选的强名称 唯一识别装配。这个清单 CLR使用信息。清单还包含 验证此程序集的安全性要求。它也是 包含组成的所有文件的名称和哈希值 集会。 .NET程序集清单包含一个 程序集中不同模块的加密哈希。 加载程序集时,CLR会重新计算 手头模块的哈希值,并与之比较 嵌入式哈希。如果在运行时生成的哈希值不同 从清单中发现的那个,.NET拒绝加载 汇编并抛出异常。
元数据是指有关数据的数据。元数据产生了 该程序集中可用的类型,即。类,接口, 枚举,结构等,以及它们包含的命名空间, 每种类型的名称,可见性/范围,基类, 它实现的接口,方法和范围, 和每个方法的参数,类型的属性等。 程序集元数据由高级别生成 编译器自动从源文件。编译器 将元数据嵌入目标输出文件中,一个dll, 多模块的情况下的.exe或.netmodule 组装
答案 1 :(得分:6)
这是最简单的答案。
程序集:包含程序的一个或多个文件。通常是exe或dll或这些和其他一组文件的组合
MetaData:包含两者 1)汇编元数据2)类型元数据。
1)程序集元数据也称为MANIFEST,它包含程序集的名称,版本,文化,强名称信息,参考程序集信息等。
2)Type Metadata是导出的数据类型和汇编方法。
答案 2 :(得分:3)
Manifest:它存储有关CLR加载程序集所需的程序集的信息(如程序集名称,版本等)。
元数据:它存储程序集的详细信息,如方法名称,成员等。
在将代码转换为MSIL时,编译器会自动生成这两个文件。
答案 3 :(得分:1)
来自"Programming .NET Components, Second Edition" By Juval Lowy published by O'Reilly第一段:
元数据:
元数据是描述.NET程序集中的内容的完整方式。 挖掘元数据会产生该程序集中可用的类型, 即类,接口,枚举,结构等,以及它们的包含 名称空间,每种类型的名称,可见性/范围,基础 class,它实现的接口,方法和范围,以及 每个方法的参数,类型的属性等。大会 metada是由高级编译器自动生成的 源文件。编译器将元数据嵌入目标输出中 在多模块的情况下,文件,dll,.exe或.netmodule 部件。在多模块组件的情况下,任何模块 包含IL必须在其中嵌入元数据来描述类型 在那个模块中。每个针对.NET CLR的编译器都是必需的 生成并在输出文件中嵌入元数据,以及 元数据必须采用标准格式。 .NET反思广泛 使用元数据信息来了解类型信息 动态。
元数据是托管程序集中的附加信息,用于描述类型,类型名称,方法名称等内容(基本上,您可以从Reflection服务检索的信息)。有关详细信息,请参阅http://msdn2.microsoft.com/en-us/library/ms404430.aspx。
装配清单:
元数据描述了程序集中的内容,而清单则描述了内容 描述了程序集本身,提供了共享的逻辑属性 通过组件中的所有模块和所有组件。清单 包含程序集名称,版本号,语言环境和可选项 唯一标识程序集的强名称。这个清单 CLR使用信息。清单还包含 安全要求验证此程序集。它还包含名称 和组成程序集的所有文件的哈希值。互联网 程序集清单包含不同模块的加密哈希 在集会中。加载程序集时,CLR会重新计算 手头模块的哈希值,并将其与嵌入式进行比较 哈希值。如果在运行时生成的哈希与在中找到的哈希不同 清单,.NET拒绝加载程序集并抛出一个 例外。这与COM不同,在COM下可以 将原始DLL或EXE文件与另一个具有相同类型的文件交换 库/接口并通过运行导致系统损坏 恶意代码。清单也是由自动生成的 来自所有模块的源文件的高级编译器 部件。清单只嵌入到一个物理文件中,只嵌入一次 因为它对于组件中的所有模块都是通用的,而对于 元数据需要嵌入所有模块。 .NET CLR兼容 编译器必须生成清单,它应该在标准中 格式。使用清单.NET可以捕获有关其他信息 引用的程序集这确保了版本兼容性,以及 程序集可以与其他的确切信任集进行交互 它期望的组件。清单包含每个引用的程序集 name,其公钥(如果有强名称),其版本 数字和区域设置。在运行此程序集时,.NET可以保证这一点 只使用这些特定的组件,并且只能兼容 版本已加载。
“Manifest”是一个相当重载的术语。在.NET中,“程序集清单”是描述版本控制内容的程序集中的一些元数据。有关详细信息,请参阅此处http://msdn2.microsoft.com/en-us/library/1w45z383.aspx。
您可以阅读有关汇编清单here
的更多信息有关整个程序集和模块的元数据称为清单
答案 4 :(得分:0)
元数据描述了程序集中的内容,而清单描述了程序集本身,提供了程序集中所有模块和所有组件共享的逻辑属性。清单包含程序集名称,版本号,语言环境以及唯一标识程序集的可选强名称。