导航

Essential .NET 读书笔记 [第二部分]

Posted on 2005-11-27 22:14  InterMa  阅读(1099)  评论(6编辑  收藏  举报

续前一篇( http://interma.cnblogs.com/archive/2005/11/24/283814.html

三.             第二章 组件

1.    CLR模块包含代码,元数据,资源。CLR模块依然是WinNTPE/COFF的可执行文件的扩展版,它其中的大部分内容作为不透明的数据存放在PE/COFF文件的.text部分中。

2.    4种模块输出种类:exe, winexe, library, module。其中只有module不能独立部署(程序级才是部署的原子单位),即CLR无法直接加载它。

3.    程序集(assembly)是由一个或多个模块所组成的。      

4.    程序集的元数据中包含程序集清单部分(assembly manifest,即.assembly,而不是.assembly extern),对于没有程序集清单的模块(module)CLR只能间接加载。

5.    程序集4部分名称(强名称):Name, Version, Culture, PublicKeyToken

6.    含有Culture特性的程序集不能含有代码,它们是纯资源程序集(又称为satellite程序集)。也就是说包含代码的程序集都是culture-neutral的。

7.    强名称程序集会把Public Key附到程序集中。

8.    CLR总是按需加载程序集。(Good Feature

9.    Assembly.LoadForm():直接通过程序集加载器加载(通过位置加载),完全忽略任何版本策略。

Assembly.Load():先通过程序集解析器解析,再通过程序集加载器加载。

10. 版本策略只能用在强名称程序集上边。

11. 版本策略的3个级别:应用程序策略(app.config=>发行者策略(整合的资源)=>机器策略(machine.config)。其中要注意发行者策略一般用于组件,来标明组件那些版本可以互相兼容。(Good Feature

12. 查找程序集文件的策略:[1] GAC => [2] CodeBase Hint (href指定位置) =>[3] ProbingAppBase目录和其子目录)

[待续...]