[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 7.0 SDK(Software Development Kit) 及 Sandbox(沙盒) 存放路径
1. Sandbox(沙盒) 存放路径 我的硬盘/Users/wj121/Library/Developer/CoreSimulator/Devices/879D7E35-BE50-4620-97E1 ...
- js判断值是不是全是数字
if(isNaN(value)){ 不是数字 }else{ 全是数字 }
- plsql中特殊字符的处理
--去除换行chr(10) update zhzl_address t set t.add_administration_num=replace(t.add_administration_num,ch ...
- 国产Linux下开发正式开工(deepin)
配置开发环境 1.一般工具 在深度商店安装QQ,微信,安装一般软件WPS,Navicat数据库工具,文本编辑notepadqq. 影视娱乐爱奇艺,优酷,酷狗. 2.安装主要的开发环境 (1)c# 深度 ...
- SQL语句中生成UUID方法
SQL语句中生成UUID方法为UUID() 生成带横线UUID: select UUID() 形如:abaffaca-fd55-11e5-b3d0-d2 ...
- 移动端利用canvas画布简单实现刮刮乐效果
为了研究canvas一些属性简单实现的一个小效果 代码样式不太规范 随手写的 请问喷 初学者可以看下 css代码 <style> * { margin: 0; padding: 0; } ...
- mqtt使用一
最近做的一个项目用到了mqtt协议,我需要从第三方订阅主题接受消息,还需要自己搭建,mqtt服务器去发布主题.下面就详细介绍一下环境的搭建和使用. 1.mqtt介绍 MQTT是一个基于客户端-服务器的 ...
- windows简易使用composer 安装国内镜像
1.下载composer.phar文件 地址: https://getcomposer.org/download/ 从下面选择一个 2.下载成功,新建项目(找到已有的项目文件夹)文件夹(D:\PHP ...
- STM32F407+STemwin学习笔记之STemwin移植补充Touch
原文地址:http://www.cnblogs.com/NickQ/p/8857213.html 环境:keil5.20 STM32F407ZGT6 LCD(320*240) STemwin:S ...
- kubernetes基础使用
查看节点详细信息 kubectl describe node vm2 显示版本号 kubectl version Client Version: version.Info{Major:"1& ...