我了解程序集由 1 个或多个模块和资源文件(如果有)组成。
如果您在 C# 中编译项目,那么编译器只会将代码转换为托管模块,然后将该模块放入程序集。现在我的问题是,什么时候程序集会有 1 个以上的托管模块?
这是Netmodule 与 Assembly的一个很好的解释。
简而言之,出于以下原因,人们会使用多个模块:
多语言程序集。
如果程序集由不同编程语言的源文件组成,则必须将相同编程语言的文件编译成网络模块,然后将它们链接到程序集中。
单独维护源文件。
如果程序集由多个开发人员维护,则将源文件分成小集合可能是有意义的。每个集合均由单个开发者拥有。集合被编译为网络模块,然后链接到最终的程序集。
下载占用空间小。
如果程序集托管在 http 站点中,CLR 只会在第一次下载主模块。其余模块将按需下载。你可以将不常用的代码从主线代码中分离出来,并将不常用的代码编译为netmodule。用户仅在需要时才下载网络模块。
将相同的源文件链接到多个程序集中。
您可能有一些在多个程序集中使用的通用代码。公共代码足够小,不值得将它们编译成单独的程序集。为了避免多次编译相同的源文件,您可以将它们编译成一个网络模块,然后将其链接到不同的程序集中。