一:程序集由描述它的元数据,描述导出类型和方法的类型元数据,MSIL代码和资源组成。
二:程序集的一个重要部分是程序集清单:它是元数据的一部分,描述了程序集和引用它所需的所有信息,并列出所有的依赖关系。清单:
1:标识(名称,版本,文化,公钥)
2:引用程序集的列表
3:一组许可请求
4:导出的类型
三:ILDASM(命令行工具),是MSIL disassembler。在命令行输入ILDASM,可以显示程序集清单,命名空间及包含的类。
打开程序集清单就可以看见我前边所述的内容。
打开类的方法,就可以查看MSIL的代码
四:模块
1:模块可以更快的启动程序集,因为并不是所有的类都在一个文件中,模块只有在需要时再加载。
2:如果使用多语言编写程序集,就可以通过模块来实现,然后包括在同一个程序集中。
五:CLS要求
1:.Net .custumer工具只使用.Net Framework中的类,它不能创建用于其他语言的.Net类。.Net consumer工具可以使用任何与CLS兼容的.Net类。
2:.Net extender工具可以继承任何与CLS兼容的.Net类,并可以定义由客户使用的新CLS兼容类。
六:CLSCompliant属性
利用CLSCompliant属性可以把程序集标记为CLS兼容,可以确保这个程序可以应用与所有的CLS consumer工具。
但是在私有方法中使用数据不受限制,因为别的类根本访问不到它们。
使用方法:把程序集标记为兼容,仍可以定义不兼容的方法,但是要见CLSCompliant属性设置为false。
[CLSCompliant(false)]
void Method(uint i)
{
//...
}
注:CLSCompliant可以引用到类型,方法,属性,字段和事件上。
七:CLS规则
1:方法原形中的所有类型都要与CLS兼容
2:数组元素的元素类型必须与CLS兼容,下标必须为0
3:CLS兼容类必须继承于CLS兼容类
4:CLS中方法名不区分大小写
5:枚举类型必须为Int16,Int32或者Int64的。
注:在方法名中使用数据类型名时,应使用一般的类型名:如:
int ReadInt32()
int ReadInt64()
int ReadSingle()
八:共享程序集名
1:程序集本身的名称
2:版本号
3:公钥保证强名称的唯一性
4:文化
注:可以使用命名空间层次结构给类命名。