什么是管理模块(与assembly相比)?

什么是.NET中的托管模块,它与Assemblies有何不同? PE文件(例如test.dll)是托管模块还是程序集? 汇编/托管模块如何与磁盘上的物理文件相对应?

管理模块通常被理解为指代仅包含IL代码而没有直接机器代码的模块。

模块位于普通PE文件中。

程序集是一组1个或多个模块,其中一个指定为“head”(将查找确切的术语[1])。 一个模块本身并没有单独使用 – 组件是primefaces单元。

例如,您可以使用包含2个DLL和EXE的multui模块程序集。 多模块组件非常罕见。

Don Box书籍Esssential .NET,Richter CLR通过C#提供了很好的主题报道。 有关完整的详细信息,Serge Lidin .NET 2.0 IL Assembler一书和CLI标准更完整。

[1]根据http://www.programmersheaven.com/2/FAQ-DOTNET-DOTNET-Assembly-Explained

程序集可以是单个文件,也可以由多个文件组成。 在多文件的情况下,有一个主模块包含清单,而其他程序集作为非清单模块存在

回答实际问题: –

什么是.NET中的托管模块,它与Assemblies有何不同?

它是一个子集 – 一个DLL可以是没有子模块的主模块 – 因此也是一个程序集

PE文件(例如test.dll)是托管模块还是程序集?

绝对是一个模块。 如果它还有一个清单而没有子模块,那么它也是一个程序集

汇编/托管模块如何与磁盘上的物理文件相对应? 每个模块都是一个文件。 (如果您感兴趣,ILMerge等工具可以合并模块)

模块包含IL,其中许多链接在一起以创建一个程序集,该程序集通常位于PE中,如.exe或.dll。

PE也可以包含本机(非托管)代码。

这是概念的一个很好的介绍。

托管模块是源代码的已编译IL版本。 从源文件制作模块时构建的文件的扩展名为.netmodule。

程序集是包含托管模块,资源和元数据的DLL或.exe文件。