首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序集+元数据+汇编语言+ MSIL代码

程序集+元数据+汇编语言+ MSIL代码
EN

Stack Overflow用户
提问于 2013-03-19 11:54:36
回答 3查看 5.3K关注 0票数 1

任何人都能回答以下问题吗?我正在使用c#语言。

  1. 我可以将程序集称为.ddl或.exe文件吗?
  2. 我可以称大会宣言为大会吗?
  3. 汇编语言、元数据和汇编语言之间有什么不同?
  4. 我能说吗 .DLL或.EXE = Assembly + Meta ++ MSIL代码。

请帮我解决这些问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-19 12:58:40

1 --程序集可以是单个.DLL或.EXE文件,但并非所有.DLLs和.EXEs都是程序集。程序集特定于.NET框架。.EXE和.DLL程序集都可以由.NET应用程序引用或加载。

2 --程序集清单只是包含描述程序集的元数据的程序集的一部分。来自MSDN程序集清单:

  • 枚举组成程序集的文件。
  • 控制对程序集类型和资源的引用如何映射到包含其声明和实现的文件。
  • 枚举程序集所依赖的其他程序集。
  • 提供程序集的使用者与程序集的简化详细信息之间的间接级别。
  • 呈现自描述的程序集。

如果需要更改与特定程序集关联的元数据,可以从代码中添加和更改程序集清单的某些方面。程序集清单可以作为自己的物理文件存储,但仍被视为程序集的一部分。

3 --程序集由CIL代码、描述CIL代码定义的类型的元数据、描述程序集的元数据清单和其他资源(如程序集所需的静态映像)组成。因此,程序集清单与元数据一样,只是程序集的一部分。

4 --几乎。程序集= MSIL代码+程序集清单+类型元数据+资源.

程序集可以编译为.EXE或.DLL文件,但也可以由多个文件组成。

票数 4
EN

Stack Overflow用户

发布于 2013-03-20 18:35:26

让我们从这些概念开始(简单地),然后我们就有了答案。

编译器是语法检查器和“正确的代码”分析器。在.Net平台中,无论使用哪个编译器,结果都是一个托管模块。托管模块是标准的32位Microsoft可移植可执行文件(PE32)或要求CLR执行的标准64位可移植可执行文件(PE32+)。

IL代码代码编译器在编译源代码时产生的。在运行时,CLR将IL编译为本机CPU指令。

元数据每个托管模块都包含元数据表。表有两种主要类型:描述源代码中定义的类型和成员的表和描述源代码引用的类型和成员的表。

程序集是一个抽象的概念,最初很难理解。首先,程序集是一个或多个模块或资源文件的逻辑分组。其次,程序集是重用、安全和版本控制的最小单元。根据您使用编译器或工具所做的选择,您可以生成一个单文件或多文件程序集。在CLR世界中,程序集就是我们所称的组件。

( CLR实际上并不适用于模块,而是用于程序集)

Assembly 是程序集部分,它描述程序集中的文件集

程序集允许您将可重用、安全、可版本的组件的逻辑和物理概念解耦。程序集的模块还包括有关引用程序集的信息(包括其版本号)。此信息使程序集自描述。换句话说,CLR可以确定程序集的直接依赖关系,以便执行程序集中的代码。

实际上,在使用C#编译器时,会使用编译器选项来生成.DLL或.EXE,因此DLL和EXE在程序集概念中是相等的组件。

所以我们会有

正确,程序集是手动DDL或EXE文件。

2-不,程序集清单只是程序集的一部分。

3-在答复中说明

4-托管.DLL或.EXE =程序集(包含元数据+汇编语言+ MSIL代码)

图片和一些来自杰弗里·里克特的引号

票数 3
EN

Stack Overflow用户

发布于 2016-04-11 10:38:54

摘自Pro C# 5和.NET 4.5 Framework一书

当使用.NET感知编译器创建*.dll或*.exe时,二进制blob被称为程序集

程序集包含MSIL代码,在概念上类似于Java字节码,因为它在绝对必要之前不会编译成特定于平台的指令。通常,“绝对必要”是指在.NET运行时引用一段MSIL指令(例如方法实现)以供使用。

除了MSIL指令外,程序集还包含元数据,该元数据生动详细地描述了二进制文件中每种“类型”的特征。例如,如果您有一个名为SportsCar的类,则类型元数据描述诸如SportsCar的基类(如果有的话)由SportsCar实现的详细信息,以及SportsCar类型支持的每个成员的完整描述。.NET元数据始终存在于程序集中,并由.NET感知的语言编译器自动生成。

最后,除了MSIL和类型元数据之外,还使用元数据来描述程序集本身,它被正式称为清单。清单包含有关程序集当前版本的信息、区域性信息(用于本地化字符串和图像资源)以及正确执行所需的所有外部引用程序集的列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15498818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档