- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 程序集
;程序集
程序集概述
创建程序集
共享程序集
版本问题;程序集是.NET应用程序的部署单元。.NET应用程序包含一个或多个程序集。通常扩展名是EXE或DLL的.NET可执行程序称为程序集。
程序集和本地DLL或EXE有什么区别?
文件扩展名虽然相同,但是.NET程序集包含元数据,这些元数据描述了程序集中所定义的所有类型及其成员的信息,包括方法、属性、事件和字段。
.NET程序集的元数据还提供了程序集中文件的相关信息、版本信息和所使用的程序集的信息。;程序集的组成可以由单一的文件组成,也可以由一个程序集的元素包含在几个文件中,不管是单文件还是多文件组成的程序集都可以由以下4个元素组成:
程序集清单:每个程序集都包含一个元数据集合,用来描述该程序集及组件,这个元数据集合即被称为程序集清单。
类型元数据:用于描述程序集中类型的数据,包括有关类名方法及参数、调用约定、属性、字段、事件类型及外部应用程序使用这些类所必须的其他信息。
Microsoft中间语言(MSIL)代码:公共语言运行库编译并执行的就是MSIL,而不是用户编写的源代码。
资源集:资源表示程序集中所有其他的文件,例如一些图片文件。;程序集包含两种:
私有程序集:是特定应用程序的一部分,不能由其他应用程序使用。
私有程序集要部署在与应用程序相同的目录中,或者在这个目录的子目录中。这种部署方法保护了这个私有的程序集,使其不被其他没有权限的应用程序访问到。
私有程序集没有特殊的管理、注册和版本设置的问题,私有程序集的名称在应用程序中必须唯一。
共享程序集:是其他应用程序可以使用的公共库。.NET Framework类库就是由共享程序集组成的。
共享程序集减少了磁盘和内存空间的需求。使用共享程序集时,要遵循许多规则:版本号和一个唯一的名称。
为了构建共享程序集需要把程序集放在文件系统的一个特定的子目录树中,称为全局程序集缓存(GAC) 。GAC允许共享系统上同一程序集的不同版本。;在Visual Studio中,所有的C#项目类型都会创建一个程序集,无论是DLL项目类型(例如创建一个类库)还是EXE项目类型。
在创建Visual Studio项目时,会自动生成源文件AssemblyInfo.cs,这个文件在解决方案的Properties对话框中。在该文件中,可以使用一般的源代码编辑器配置程序集的特性。
这个文件用于配置程序集清单,编译器读取程序集特性,把特定的信息插入到程序集清单中。Assembly:前缀把属性标记为程序集级别特性。
;私有程序集的创建和使用:
新建类库
实现类库功能
编译和生成DLL文件
在其他项目中引用该DLL文件;共享程序集:
必须使用强名称唯一地标识共享程序集,强名通过给程序集的签名来创建。
强名称由下述项组成:
程序集本身的名称
版本号,有了版本号,可以同时使用同一个程序集的不同版本。
公钥保证强名称独一无二
区域性;全局程序集缓存:
就是可以全局使用的程序集的缓存,大多数共享程序集都安装在这个缓存中。
GAC位于windows\assembly目录下。
gacutil.exe实用工具可以使用命令行安装、卸载和显示程序集:
gacutil /l :显示程序集缓存中的所有程序集
gacutil /i:把共享程序集安装到程序集缓存上。即使程序集已安装,也可以使用/f强制安装到GAC中。
gacutil /u:卸载程序集 ;创建强名:
要共享一个程序集,需要一个强名。要创建这个名称,可以使用强名工具(sn):sn –k ***.snk
强名实用工具生成和编写一个公钥/私钥对,并把该密钥写到snk文件中。
在VS2012中,可以通过项目属性的“签名”选项卡,为程序集签名,也可以创建密钥。
安装共享程序集:
程序集有了公钥后,就可以使用全局程序集缓存工具gacutil及其/i选项把他安装到全局程序集缓存中。
gacutil /i ***.dll /f
可以在Windows\Microsoft.NET\assembly\GAC_MSIL\MySharedDemo\目录下查看该共享程序集。
使用共享程序集:
跟使用私有程序集的方式一样,添加引用。;综合上述,在.Net中进行共享程序集编程可分为以下步骤:
生成共享程序集代码文件(组件、类库等)
创建密钥文件并签名共享程序集
在GAC中安装共享程序集
在客户端使用共享程序集;版本问题:
对于私有程序集,版本问题并不重要,因为被引用的程序集会与客户端一起复制。客户端使用其私有目录下的程序集。
对于共享程序集允许安装共享组件的不同版本,客户端使用它们在构建过程中引用的版本。
版本号:程序集的版本号由4部分组成,例如:1.0.400.3300
主版本
次版本
生成号
修订号
文档评论(0)