什么是.NET中的模块?

什么是模块? 模块,类和函数之间有什么区别? 如何在c#.net中访问模块?

更新:我这样问,因为没有使用代码签名,我想计算一个特定函数(在运行时)的IL代码的校验和。

模块是程序集内代码的逻辑集合。 你可以在一个Assembly中有多个模块,每个模块都可以用不同的.NET语言编写(就我所知,VS不支持创build多模块程序集)。

组件包含模块。 模块包含类。 类包含函数。

是的,您可以在运行时通过reflection访问程序集,模块,类,函数,属性,字段等。

作为对其他答案的补充:

MSDN指出:“一个模块是没有程序集清单的Microsoft中间语言(MSIL)文件”。

通过使用Assembly Linker(al.exe)实用程序生成程序集清单,可以将模块“链接”在一起。 如果我记得正确,CLR可以为程序集加载单个模块,这样只有必要的模块才能加载。

编辑:findNetmodules的更好的描述 ,为什么你会想要他们。

这里还有另外一个问题涉及校验题目。 答案提到使用GetILAsByteArray方法获取IL。

一份文件

这是一个模块。

module: A single file containing content that can be executed by the VES 

(其中VES是一个读取.NET程序集并将其转换为机器码的程序),请参阅http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf分区I第16页。;

程序集是文件系统(模块)中文件的连贯收集。 请参阅http://msdn.microsoft.com/en-us/library/zst29sk2(vs.71).aspx

很显然,类定义是在文件(模块)内定义的。