当前位置: 首页 > news >正文

CLR 学习-- .net中的共享组件与GAC

共享组件


为了多个应用之间共享DLL。会需要创建共享组件。 签名的组件要注册在GAC中,并且引用它的DLL也要被签名。签名的组件名称由四个部分组成:public key, file name, version number , culture identity. 其中public key是被哈希过的(并取最后八位数),由称为public key token。


示例DLL
AssemblyRef #1 (23000001) 
------------------------------------------------------- 
Token: 0x23000001 
Public Key or Token: b7 7a 5c 56 19 34 e0 89 
...


签名的public key嵌入在manifest文件中。当包含manifest文件的PE文件被创建之后,PE文件的内容也会相应被哈希。
默认情况下,签名使用的是SHA-1算法。


编译过程中查找目录的顺序
DLL所在目录
包含CLR DLL的目录
使用/libcompiler switch 指定的目录
使用LIB 环境变量指定的目录




GAC
在安装.NET时,核心DLL被分别拷贝在了GAC子目录和编译器/CLR目录中分别一份。这样在运行时GAC中也能方便访问到.NET核心组件。
每当组件被注册在GAC时,GAC会为组件生成一个目录并将其拷贝进去(而不会override之前的版本)。menifest的文件内容会被哈希,与PE文件中所嵌入的RSA的数字签名进行比对。如果不相等则安装失败。
如果签名的组件不是从GAC加载的,每次加载都会导致对menifest文件进行哈希验证。
仅当组件是为了被多应用共享时,才建议安装在GAC。




.Net中的类型绑定过程




相关文章:

  • PXA270嵌入式系统设计一:电源管理部分
  • Azure Machine Learning Studio 实例 -- 预测xx年的食物工厂总数
  • azure machine learning 预测分类实例-- 预测出口国
  • PXA270嵌入式系统设计二:时钟及复位部分
  • azure machine learning 机器学习算法的选择
  • linux内核对S3C2410睡眠模式的支持
  • 机器学习 -- 最小二乘法与梯度下降法
  • 机器学习-- K-Means 的介绍与实现
  • 【公告】博客文章丢失,现已全部重新上传!!
  • 机器学习 --KNN的介绍与实现
  • 学会面对生死---写在爷爷离开后的日子
  • 机器学习 -- 二元逻辑回归实例
  • Winforms: 不能在Validating时弹出有模式的对话框
  • 修改Sql Server ISOLATION LEVEL的3种方式
  • 商业周刊:挖掘网络友情背后价值
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • CentOS6 编译安装 redis-3.2.3
  • Java 网络编程(2):UDP 的使用
  • JWT究竟是什么呢?
  • Python_网络编程
  • vue的全局变量和全局拦截请求器
  • 爱情 北京女病人
  • 动态魔术使用DBMS_SQL
  • 力扣(LeetCode)965
  • 听说你叫Java(二)–Servlet请求
  • ionic异常记录
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • ${ }的特别功能
  • (3)llvm ir转换过程
  • (3)选择元素——(17)练习(Exercises)
  • (bean配置类的注解开发)学习Spring的第十三天
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .gitignore文件---让git自动忽略指定文件
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @在php中起什么作用?
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [145] 二叉树的后序遍历 js
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [autojs]autojs开关按钮的简单使用
  • [C++][数据结构][算法]单链式结构的深拷贝
  • [Java、Android面试]_05_内存泄漏和内存溢出
  • [Java、Android面试]_10_Java中==与equal()方法的区别?重写equal()方法?
  • [javaSE] 数据结构(二叉查找树-插入节点)