具有多个托管模块的组装

ebb*_*ebb 5 c# clr

我了解程序集由 1 个或多个模块和资源文件(如果有)组成。

如果您在 C# 中编译项目,那么编译器只会将代码转换为托管模块,然后将该模块放入程序集。现在我的问题是,什么时候程序集会有 1 个以上的托管模块?

L.E*_*E.O 4

这是Netmodule 与 Assembly的一个很好的解释。

简而言之,出于以下原因,人们会使用多个模块:

多语言程序集。

如果程序集由不同编程语言的源文件组成,则必须将相同编程语言的文件编译成网络模块,然后将它们链接到程序集中。

单独维护源文件。

如果程序集由多个开发人员维护,则将源文件分成小集合可能是有意义的。每个集合均由单个开发者拥有。集合被编译为网络模块,然后链接到最终的程序集。

下载占用空间小。

如果程序集托管在 http 站点中,CLR 只会在第一次下载主模块。其余模块将按需下载。你可以将不常用的代码从主线代码中分离出来,并将不常用的代码编译为netmodule。用户仅在需要时才下载网络模块。

将相同的源文件链接到多个程序集中。

您可能有一些在多个程序集中使用的通用代码。公共代码足够小,不值得将它们编译成单独的程序集。为了避免多次编译相同的源文件,您可以将它们编译成一个网络模块,然后将其链接到不同的程序集中。