程序集由描述它的程序集元数据、描述导出类型和方法的类型元数据、MSIL代码和资源组成
程序集可以使用命令行实用工具ildasm来查看,这是一个MSIL反汇编程序
私有程序集没有特殊的管理、注册和版本设置等问题,只有用户自己的应用程序在使用私有程序集时才有版本问题
共享程序集必须有一个版本号和一个唯一的名称,通常它安装在全局程序集缓存(global assembly cache,GAC)中
GAC位于<windows>\assembly目录下
程序集清单,它是元数据的一部分,由以下组成:
.标识(名称、版本、区域性和公钥)
.属于该程序集的一个文件列表
.被引用程序集的列表
.一组许可请求
.导出的类型
AssemblyInfo.cs用于配置程序集清单
assembly:前缀把属性标记为程序集级别特性
动态加载和创建程序集
CompileAssemblyFromSource()方法动态创建一个程序集
在.NET体系结构中,应用程序有一个新的边界:应用程序域
使用托管IL代码,运行库可以确保在同一个进程中不能访问另一个应用程序的内容
多个应用程序可以运行在一个进程的多个应用程序域中
AppDomain类用于创建和终止应用程序域,加载和卸载程序集和类型,以及枚举应用程序域中的程序集和线程
CreateDomain()方法新建应用程序域
必须使用强名唯一的标识共享程序集,强名通过给程序集的签名来创建
强名由下述组成:
.程序集本身的名称
.版本号
.公钥保证强名是独一无二的
.区域性
创建强名,使用强名工具(sn),示例:
sn -k mykey.snk
程序集中有了公钥之后,就可以使用全局程序集缓存工具gacutil及其/i选项把它安装到全局程序集缓存中,示例:
gacutil /i SharedDemo.dll /f
GAC中的程序集可以包含与它们相关联的引用
使用gacutil实用工具和选项/r可以设置程序集的引用
COM组件使用注册表来配置组件。.NET应用程序的配置是使用配置文件完成的
配置类型:
.启动设置 --用于指定需要的运行库版本
.运行库设置 --用于指定运行库如何进行垃圾收集如何进行程序集绑定
.WCF设置 --用于利用WCF配置应用程序
.安全设置
.应用程序配置文件
.计算机配置文件 --可以用于系统范围的配置
.发行者策略文件 --由组件的创建者用于指定共享程序集可以与旧版兼容
查找程序集的正确目录有俩种方式:使用XML配置文件中的codeBase元素,或者使用probing元素
程序集的版本号由4部分组成,例如1.0.400.3300,各部分分别是
<Major>.<Minor>.<Build>.<Revision>