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

17 .net c#

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

Rub*_*ink 13

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

模块位于普通PE文件中.

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

例如,您可以拥有一个包含2个DLL和EXE的multui-module程序集.多模块组件非常罕见.

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等工具可以合并模块)