C#基础之CLR的执行模型(二)

二、将托管模块合并成程序集

 

  • 程序集是什么?

它是一个或多个模块/资源文件的逻辑分组,同时又是重用、安全性、版本控制的最小单元。

个人理解,一个类库项目就应该是一个程序集,因为它可以进行重用、配置安全性、版本控制。一个解决方案中包含若干程序集,构成一个完整的程序。

 

  • 程序集中有什么?

首先有一个清单,它描述了构成程序集的文件、程序集中的文件所实现的公开导出的类型(public类型),以及程序集关联的资源或数据文件。

除了清单,剩下的大抵就是清单中列出的文件。

 

  • 托管模块合并成程序集?

没错,这项工作由工具完成。

对于C#来说,就是C#编译器(CSC.exe),还有程序集链接器(AL.exe)。

工具将托管模块、资源文件等,合并成一个PE32(+)文件,表示这些文件的逻辑分组。

 

  • 这样合并在一起,有什么好处呢?

当然是为了增加灵活性。因为是逻辑分组,跟物理分组不同,程序集的文件可以部署在不同位置。

打个比方,假如小一、小二是一家人,他们家叫程序集,等小一、小二外出求学,各自工作,他们仍是一家人。家里有事,一个电话就都叫回来了。如果他们家还有个失散的亲人叫小三,必要时也是可以相认的,于是家庭完整,皆大欢喜,本书完……

程序集的成员,必要时也可从别处下载,从而组成完整的一个程序集……

托管组件中引用了其它的程序集,则清单中也会记录,使程序集知道,那谁谁是咱家的,放假了得赶紧把人领回来……

根本不需要注册表、ADDS啥的,是不是比非托管组件更容易部署呢?么么哒!

posted @ 2016-12-15 15:47  初一大雪  阅读(119)  评论(0编辑  收藏  举报