C# 中的模块和程式集
来源:http://www.tudoupe.com时间:2021-12-02
当创建 C# 源代码时, C# 编译器将它转换成主机模块, 而不是最终的机器语言。 这与 CLR 函数有关, 因为 CLR 设计的目的是更好地利用多个平台中以多种语言( 如 C#, VB) 开发的源代码, 而不是为一个结构编集 CPU 。 在编译器生成主机模块后, 主机模块中的 IL (中间代码) 代码最终会被实时开发成使用 JIT 编译器的 CPU 命令 。

主机模块主要持有以下数据:元数据、国际法中间代码、CLR头和PE32+头(32比特系统PE32)。
元数据:一个包含模块中某些数据的数据表格。 有三个元数据表格: 创建元数据表格, 参考元数据表格, 以及清单元数据表格。 定义元数据表格的内容为模块源代码中指定的类别、 字段、 方法等。 并引用元数据表格的内容来确定哪些类别、 成员等 。 列表( Maniest) 是收集程序所必需的, 主机模块包括元数据, 但不一定是库存数据表。 当主机模块有列表时, 可以视为程序集。 包含此程序的其他文件的名称记录在列表中, 具体如下:


由于我在文件的开头使用了很多其他程序, 列表将反映我在此集中引用的其他程序。 除此之外, 版本编号和安全信息等其他方面在列表结尾处被记录下来 。

IL 中间代码:一个编译器生成的中间代码,随后由CLR JIT 编译器转换成最终的 CPU 指令。
CLR 头 : 包含将该模块区分为主机模块的信息, 如某些符号、主机模块门户方法的元数据符号( 主机), 以及其他一些不重要数据的位置/大小 。 CLR 头在主机模块中并不重要, 而数据大小比非常小 。
![]()
PE32+head: 这是标准 Windows PE 信头 。
前两个数据构成主机模块,但 CLR 不通过主机模块运行, 而 CLR 则通过应用程序集运行。 Set 是一个抽象的概念, 可以被视为一个或一个以上主机模块的逻辑分组。 软件包除了包含主机模块外,还包括资源文件, 如 jpeg, 必须用来集中 prp 。

程序集通常采取Exe 或 dll 的形式。 区别在于 Exe 有自己的程序门户( Main), 因为 dll 功能更强, 没有自己的门户。 例如, 在 Vision Studio 中, 项目可以被视为一组程序。 以前讨论过一个主机模块列表, 其中具体说明了有多少模块或单个模块被合并到一个应用程序集中。 首先, 必须有一个目录元数据表, 因为目录记录了程序集的版本、语言文化、 t。
例如,如果我在一个项目中有两个源文件,即RUT.Cs和FUT.cs, 独立地界定各种类型和方法, 这两种源代码可被视为带有后缀的两个主机模块。 Netmodule( 因为转换器将把源代码编译为主机模块) 现在将把它们捆绑到一个程序集中。 RUTs 中的东西一般没有被使用, FUTs 中的东西也被使用, 所以当我们编译和合并时,

其他方法包括将清单元数据插入空主机模块。

或者,可以集中使用一个单独的主机模块。
CLR 最终将编程源代码以创建程序集, 程序集随后将执行。 因此, 程序极有可能是源- 主机模块程序集 。
使用这套工具有若干好处,例如,一个企业为其产品创造许多新的功能模块,这些模块可能单独储存在单一程序(dll)中,其中一些功能往往没有被利用,甚至根本不可能使用,因此公司能够使客户下载的只是用户可以使用的功能模块,最大限度地减少下载次数,并确保流程模块化。 使用这套工具有许多好处,例如一家公司为其产品生成了许多新的功能模块,这些功能模块可能独立存储在单一程序(dll)中。其中一些功能往往没有被利用,甚至可能根本不被利用,因此公司只能允许客户下载用户可以使用的功能模块,减少下载次数,确保流程模块化。
相关新闻
- 2022-01-28 S32DS——PE调试器使用
- 2022-01-28 华硕M2N-MX SE主板如何进入bios设置
- 2022-01-28 华硕B85-A主板如何是通过bios设置u盘
- 2022-01-27 ltraISO 生成u盘启动盘后处理事项
- 2022-01-27 华硕P5QL-CM主板如何通过bios设置u盘
- 2022-01-27 微pe怎么安装原版win11 微pe安装原版
- 2022-01-26 win10 esd系统怎么用pe安装
- 2022-01-26 电脑系统装机教程图解(电脑装机
- 2022-01-25 非mbr怎么激活
- 2022-01-25 eprime安装教程
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
