2

所以,我对 .NET 运行时架构和结构很感兴趣。我想逐步了解它是如何工作的。我有几本书,也在谷歌中寻找一些答案,但现在,我想要一些问题的正确答案。

在编写的书中,CSC.exe(编译器)生成托管模块,其中包含: 1. PE 头 2. CLR 头 3. 元数据 4. IL 代码

编译后,工具 AL.exe(程序集链接器)将该模块合并到程序集中。我也知道,程序集有两个主要的文件扩展名:DLL 或 EXE。

但是,我对托管模块很感兴趣。它如何编译编译器以及文件格式有什么?它是 .netmodule 扩展名吗?或 DLL ?

ps对不起我的英语。

4

1 回答 1

1

托管模块在格式上就像 .DLL/.EXE 一样(它们都是 PE 格式,它们包含 PE 头 + CLR 头 + 元数据 + 代码)。不同之处在于,如果您正在执行多模块组装,您将创建一个 .netmodule。多模块程序集是其中包含多个模块的程序集,System.Data.dll 就是一个示例,因为它在 1 个程序集中同时具有托管部分和本机 C++ 部分。

.NetModules 只是将多个模块打包成一个程序集的一种便捷方式。高级编译器(如 C#)不处理它,这就是您需要使用 Assembly Linker 工具 (AL) 的原因。

希望这有帮助 谢谢

于 2012-10-20T23:29:33.410 回答