.NET组件程序设计 第5章 版本控制
来源:互联网 发布:网络安全标志图片大全 编辑:程序博客网 时间:2024/06/06 05:36
为毛突然就说起版本控制了,不解
程序集版本号:
每个程序集都有一个版本号,该号应用于此程序集中所有组件(多个模块)。
打开程序集信息对话窗,为一程序集属性可视化编辑器,这些属性存在项目的AssemblyInfo.cs中。
版本号基础:
由主版本号,次版本号,构建版本号,修改号共4部分组成。
程序集部署模型:
1.专用程序集,每个客户端程序维护自己专用本地程序集拷贝。
2.共享程序集,被多个客户端程序共享使用,必须安装在名为GAC(全局程序集缓存)的公共位置。
程序集解析器:
负责管理程序集兼容。
客户端应用程序声明一类型,该类型的程序集未加载,.NET搜索客户端程序集清单,查找该客户端所需程序集名称和版本,传递给程序集解析器。解析器首先搜索GAC,再搜索客户端应用程序文件夹,找到兼容程序集加载,找不到则抛出异常。
程序集强名:
GAC中,通常包含多个提供商的程序集,.NET必须提供一个唯一标示共享程序集的途径。类似MyAssembly这样的友好名是不够的会于其他提供商程序集同名。COM使用GUID(全局唯一标示符),为每个组件分一128字节号码。但GUID有缺陷,任何人都可以看到,复制他用一恶意组件替代。GUID只保证了唯一性,但未保证真实性。
强名称:.NET共享程序集包含其创建和原始内容唯一的证明。.NET使用一对公私密钥创建强名称。关键在于,由一个密钥加密的东西只能由另一个密钥破解。比如,私密钥加密的东西只能使用公密钥破解。
强名程序集在编译中,使用私密钥加密程序集哈希,生成唯一数字签名。编译器然后将该数字签名,公密钥附加到程序集清单中,每个客户端程序集都可以访问公密钥。私密钥不可访问。
客户端程序触发.NET程序集解析器,先从GAC开始搜索,如找到匹配友好名程序集,先读取其公钥与客户端所需程序集公钥对比。然后,用公钥破解数字签名而得到的哈希值与找到程序集哈希值比较,看是否为源文件,保证内容真实性。匹配,加载程序集。
只带友好名的程序集可以引用任何强名程序集,强名程序集只可引用强名程序集。
程序集项目 -> 属性 -> 签名可创建强名程序集
延迟签名:
编译器将公钥嵌入程序集清单,但不生成程序集签名(因为未使用私钥加密),客户端可引用强名程序集,但不可运行。用于大型组织,中期内部构建,严格管理私钥。
安装共享程序集:
一旦为某程序集分配了强名,便可将之安装在GAC(Windows/assembly/)中。需.NET配置工具。
在整个解决方案中共享版本号(SolutionInfo.cs):
项目解决方案 -> 添加现有项 -> 选择SolutionInfo.cs -> 单击添加,生成Solution Items文件夹
SolutionInfo.cs文件中加入该项目中需要共享的程序集属性:版本号,公司名,版权,商标
编辑项目中每个程序集AssemblyInfo.cs文件,去掉共享部分的属性指定。准备引用SolutionInfo.cs文件链接。
每个程序集 -> 添加现有项 -> SolutionInfo.cs -> 不要双击,选择“添加为链接”
SolutionInfo.cs链接丢入Properties文件夹,完成。
- .NET组件程序设计 第5章 版本控制
- .NET组件程序设计 第2章
- .NET组件程序设计 第3章
- .NET组件程序设计 第6章 事件
- .NET组件程序设计 第4章 生命周期管理
- .NET组件程序设计 第7章 异步调用
- .NET组件程序设计 第8章 多线程和并发管理
- .NET组件程序设计 第10章 远程处理
- .NET组件程序设计(第2版)
- .NET组件程序设计 第8章 多线程和并发管理 .NET多线程服务
- .NET组件程序设计 第8章 多线程和并发管理 同步线程_监视器
- .NET组件程序设计 第8章 多线程和并发管理 同步线程_互斥
- .NET组件程序设计 第8章 多线程和并发管理 同步线程_可等待事件
- .NET组件程序设计 第8章 多线程和并发管理 同步线程_信号
- .NET组件程序设计 第8章 多线程和并发管理 同步线程_互锁,读写锁
- .NET组件程序设计 第8章 多线程和并发管理 同步委托
- .NET组件程序设计 第9章 序列化和持久化
- .net组件程序设计文摘
- 非正式项目,测试a锚点和submit单击事件
- UITableView 详细讲解
- 你可能不知道的iPhone4有用技巧
- form表单提交时触发js事件
- 什么是JPA以及JPA的优越性
- .NET组件程序设计 第5章 版本控制
- Android 2.2 设置应用程序安装位置
- 急寻lingyi8866
- Real6410移植linux-2.6.39.1记录(1)-启动cramfs根文件系统
- 玩转iPhone网络通讯之BSD Socket篇
- Kinect for Windows SDK开发初体验(三)骨骼追踪
- 实训练习2 双击GridView 任何一条数据后,页面没有刷新,并将该行的数据显示在对应的字段中
- 剖析Linux系统启动过程
- uboot中main_loop分析