具有多个托管模块的程序集
本文关键字:模块 程序集 | 更新日期: 2023-09-27 18:08:28
我明白一个程序集是由1个或多个模块组成的,如果有的话,还有资源文件。
如果你用c#编译一个项目,那么编译器会简单地把代码变成一个托管模块,然后把这个模块扔到一个程序集中。现在我的问题是,什么时候一个大会有超过1个托管模块?
这是Netmodule和Assembly的一个很好的解释。
简而言之,使用多个模块的原因如下:
多语言程序集。
如果程序集由不同编程语言的源文件组成,则必须将相同编程语言的文件编译成netmodule,然后将它们链接到程序集中。
单独维护的源文件
如果程序集由多个开发人员维护,那么将源文件分离为小集合可能是有意义的。每个集合都由单独的开发人员拥有。集合被编译为netmodule,然后链接到最终的程序集。
下载占用空间小。
如果程序集托管在http站点中,CLR将只在第一次下载主模块。其余模块将按需下载。您可以将不常用的代码从主线代码中分离出来,并将不常用的代码编译为netmodule。用户只在需要时下载netmodule。
链接相同的源文件到多个程序集
您可能有一些在多个程序集中使用的通用代码。公共代码非常小,不值得将它们编译成单独的程序集。为了避免多次编译相同的源文件,您可以将它们编译成netmodule,然后将其链接到不同的程序集。
如果在Project
命名空间中有一个类,在Project.Utilities
命名空间中有另一个类,则有两个模块:
-
Project
-
Project.Utilities
这似乎是。net程序集组织的方式,classes -> modules -> assembly
。
编译器似乎按照类所在的命名空间来命名模块。
您可以使用ildasm或。net Reflector