程序集
- 程序集是自我描述的
- 版本的相互依赖性在程序集的清单中进行了记录
- 程序集可以并行加载
- 应用程序使用应用程序域来确保共独立性
- 安装简单
- 由描述它的元数据、描述导出类型和方法的类型元数据、MSIL代码和资源组成
- 模块是一个没有程序集特性的dll,但以后可以添加到程序集中。
全局程序集缓存
- 使用本地图像生成器Ngen.exe,可以在安装期间把IL代码编译为本机代码。
共享程序集
- 共享程序集必须是全局唯一。
强名由下述项目组成:
1. 程序集本身的名
2. 版本号
3. 公钥保证强名是独一无二的
4. 文化 - 加密分为,对称加密和公/私钥加密
对称加密中可以使用同一密钥进行加解密
公钥/私钥加密中如果用公钥加密就应该用对应的私钥解密,如果用私钥加密就应用对应的公钥解密。 - 安装共享程序集。gacutil /i
- sn -T, sn -Tp显示程序集中的公钥标识和公钥
- 延迟签名
1. sn -k mykey.snk 创建snk文件包含公钥和私钥
2. 提取公钥,使之用于公司开发人员,sn -p mykey.snk mypubkey.snk。用/delaysign选项编译。
3. 关闭签名的验证功能 sn -Vr ShareDemo.dll
4. 发布前用sn重新签名 sn -R MyAssembly.dll mykey.snk - 版本号格式:<Major>.<Minor>.<Buidl>.<Revision>
代码安全性
- caspol.exe 代码访问安全策略工具
- 代码访问的安全性的基础
1. 代码组
2. 权限 - 列出机器上的代码组的层次结构 caspol -listdescription
- 代码访问组 caspol -listgroups
- 查看程序集的代码组 caspol -resolvegroup assembly.dll
- 查看程序集所属代码组的权限 caspol -resolveperm assembly.dll
- 必需权限可以作为属性添加到程序集
- 使用permcalc.exe -show -assembly assembly.dll
本地化
- 程序全球化使用 System.Globalization命名空间
- 程序本地化使用 System.Resources命名空间
- 文化,特定、中立、不变
- 文化分为用户界面文化和数字及日期格式的文化。
- 排序依赖于文化
- 资源文件生成器resgen