所以,我对.NET运行时架构和结构感兴趣。我想逐步了解它是如何工作的。我有几本书,也在谷歌寻找一些答案,但现在,我想要一些问题的正确答案。
在书中写道,CSC.exe(编译器)生成托管模块,其中包含: 1. PE标题 2. CLR标题 3.元数据 4. IL代码
并在编译之后,工具AL.exe(程序集链接器)将该模块合并到程序集中。 我也知道,程序集有两个主要的文件扩展名:DLL或EXE。
但是,我对托管模块很感兴趣。它如何编译编译器以及文件格式有哪些?它是.netmodule扩展吗?还是DLL?
P.S 抱歉我的英文。
答案 0 :(得分:1)
托管模块就像.DLL / .EXE格式一样(它们都是PE格式,它们包含PE头+ CLR头+元数据+代码)。 不同之处在于,如果要进行多模块组装,则创建.netmodule。多模块程序集是一个内部有多个模块的程序集,System.Data.dll就是一个例子,因为它同时包含一个托管部分和一个原生C ++部分到一个程序集中。
.NetModules只是将多个模块打包成1个程序集的便捷方式。高级编译器(如C#)不处理它,这就是你需要使用Assembly Linker工具(AL)的原因。
希望这会有所帮助 感谢