[Clr via C#读书笔记]Cp3共享程序集和强命名程
Cp3共享程序集和强命名程序集
私有方式部署+全局方式部署;弱命名程序集+强命名程序集
强命名程序集使用发布者的公钥私钥进行签名,唯一标识发布者。
共享dll被全部复制到System32中
强命名程序集标识特征:文件名,版本号,语言文化,公钥标志。
使用SN.exe工具生成密钥对并查看,在VS中也可以进行这个操作。
全局程序集缓存GAC,GACUtil.exe
尽量避免全局安装,使用私有部署。
安装 .net framework时,实际会安装Microsoft程序集文件的两套拷贝,一套安装在编译器/CLR目录下用于生成,一套安装在GAC子目录中方便运行的时候加载。
原来如此
如果强命名程序集是在GAC以外的地方被加载(需要设置基目录配置文件的codeBase元素),那么每次加载的时候都会进行hash对比,而GAC中的hash对比只在第一次安装的时候进行。
强命名程序集能够防止篡改
延迟签名,先开发,发布的时候再正式签名。
总之,大部分情况都是私有部署的弱命名程序集,强命名程序集有自己的好处,只是不到必须的时候尽量不要用。
CLR解析类型引用
同一个文件;不同的文件,同一个程序集;不同的文件,不同的程序集。
简单来说就是通过引用不停地找,找到需要的类型为止,找不到就抛出异常。
高级管理控制
xml配置文件
目标是更加灵活地指导CLR如何加载程序集。
[Clr via C#读书笔记]Cp3共享程序集和强命名程的更多相关文章
- 第一部分 CLR基础:第3章 共享程序集和强命名程序集
第一部分 CLR基础:第3章 共享程序集和强命名程序集
- CLR via C# 读书笔记---常量、字段、方法和参数
常量 常量是值从不变化的符号.定义常量符号时,它的值必须能在编译时确定.确定后,编译器将唱两只保存在程序集元数据中.使用const关键字声明常量.由于常量值从不变化,所以常量总是被视为类型定义的一部分 ...
- Clr Via C#读书笔记---I/O限制的异步操作
widows如何执行I/O操作 构造调用一个FileStream对象打开一个磁盘文件-----FileStream.Read方法从文件中读取数据(此时线程从托管代码转为本地/用户模式代码)- ...
- Clr Via C#读书笔记---计算限制的异步操作
线程池基础 1,线程的创建和销毁是一个昂贵的操作,线程调度以及上下文切换耗费时间和内存资源. 2,线程池是一个线程集合,供应你的用程序使用. 3,每个CLR有一个自己的线程池,线程池由CLR控制的所有 ...
- Clr Via C#读书笔记---CLR寄宿和应用程序域
#1 CLR寄宿: 开发CLR时,Microsoft实际是将他实现成包含在一个dll中的COM服务器.Microsoft为CLR定义了一个标准的COM接口,并为该接口和COM服务器分配了GUID.安装 ...
- Clr Via C#读书笔记---程序集的加载和反射
#1 加载程序集 Assembly.Load: public class Assembly { public static Assembly Load(AssemblyName assemblyRef ...
- Clr Via C#读书笔记---垃圾回收机制
#1 垃圾回收平台的基本工作原理: 访问一个资源所需的具体步骤: 1)调用IL指令newobj,为代表资源的类型分配内存.在C#中使用new操作符,编译器就会自动生成该指令.2)初始化内存,设置资源的 ...
- Clr Via C#读书笔记---线程基础
趣闻:我是一个线程:http://kb.cnblogs.com/page/542462/ 进程与线程 进程:应用程序的一个实例使用的资源的集合.每个进程都被赋予了一个虚拟地址空间. 线程:对CPU进行 ...
- CLR via C# 读书笔记 6-2 不同AppDomain之间的通信 z
跨AppDomain通信有两种方式 1.Marshal By reference : 传递引用 2.Marshal By Value : 把需要传递的对象 通过序列化反序列化的方式传递过去(值拷贝) ...
随机推荐
- Xcode-push到远程仓库不能使用邮箱名,需使用昵称
1.Xcode-push到远程仓库不能使用邮箱 2.Xcode-push到远程仓库需使用昵称
- center os 7 修改 mysql 密码
笔记 本redis 密码 654321忘记密码:修改密码update user set authentication_string=password('123456') where user='roo ...
- 确认框,confirm工具封装
用bootstrap封装了个确认框工具 效果如下 代码如下: /** * 以模态窗做确认框的函数,title为标题栏内容,body为消息体,yesFun为点击确认按钮后执行的函数,执行后会执行关闭并删 ...
- BufPay.com 个人收款接口 接入步骤
作为独立开发者产品需要收款是非常麻烦的,注册公司维护成本太高,市面上各种收款工具要么手续费太高,要么到账很慢,体验很不好. 看到 「BufPay.com 个人收款」 这个收款工具,挺有意思的.原理是监 ...
- MFC+ODBC+SQL Server+Visual C++
利用SQL Server 和MFC实现对数据库的简单管理 工具:SQL Server,VC6.0 步骤如下: 1.建立一个数据库studentinfo,再建立一个表testtable,表设计和初始值如 ...
- ON DUPLICATE KEY UPDATE 插入or更新
mean:若数据表中存在以相同主键的记录,就更新该条记录.否则就插入一条新的记录. 单条:INSERT INTO tablename (`field1`,`field2`) VALUES(value1 ...
- PHP文档生成器(PHPDoc)的基本用法
目录 PHP文档生成器(PHPDoc)的基本用法 PHPDoc概述 安装 PHPDoc注释规范 页面级别的注释 代码级别的注释 生成API文档 额外软件 PHP文档生成器(PHPDoc)的基本用法 P ...
- 微信小程序 唯一标识 加减
var nums = 'goods_list[' + e.currentTarget.dataset.indexs+'].goods_num' //console.log(nuns) var num ...
- Linux的数据传输
1. sz 与 rz sz:将选定的文件从本地发送(send)到远端机器 rz:运行该命令会弹出一个文件选择窗口,从本地选择文件夹,接收(receive)从远端的文件 mac 下使用 brew 安装: ...
- 863. All Nodes Distance K in Binary Tree
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...