2013-02-28 53 views
1

我知道,管理的模块是包含PE32头,CLR头,元数据和IL代码的逻辑代码容器。程序集可以包含多个使用Assembly Linker(AI.exe)链接的托管模块。但是VS不支持多个托管模块组件。我想知道什么时候以及为什么我们需要管理模块,如果我们不能在没有组装的情况下使用它们,我们不能只使用组件吗?为什么?在哪里需要管理的模块

我肯定有一个合理的解释,但我不知道我知道它是什么:-)什么托管模块

的更多信息:What is a Managed Module (compared to an Assembly)?

+1

你会想看看Ecma 335,章节II.6.1,它给出了模块的基本原理。它是*代码共享*的单位。很晦涩,我想不出有什么好用的。编写程序的微软程序员也没有。 – 2013-02-28 04:27:03

回答

4

图表posted at the other question似乎很清楚:

enter image description here

基本上,当你想组织你的代码作为一个组件容器内,你可以使用一个托管模块。从理论上讲,这应该会给你更好的灵活性。

实际上,这种情况几乎没有发生过,因为大多数人将他们的解决方案组织为一个项目集合,每个项目都有自己的关联DLL。这种安排允许您物理换出DLL而无需更换整个(多模块)组件。

+0

您可以在答案中详细说明灵活性部分:“理论上,这应该会给您更好的灵活性。” – Tarik 2013-02-28 03:11:41

+1

好吧,因为它是一个容器。这与文件夹或zip文件为您提供的灵活性相同。或者,就此而言,您将任何容器放入其中。您可以将它作为一个单元处理;移动它,按名称调用它等。但大多数人使用DLL作为它们的容器。 – 2013-02-28 03:14:03

+0

那么编译器如何决定从哪里创建一个新的.net模块? – Tarik 2013-02-28 03:15:27

相关问题