共享程序集GAC

 

原文标题:

原文地址:https://www.cnblogs.com/1996V/p/9037603.html

共享程序集GAC

我上面说了这么多有关CLR加载程序集的细节和规则,事实上,类似于mscorlib.dll、System.dll这样的FCL类库被引用的如此频繁,它已经是我们.NET编程中必不可少的一部分,几尽每个项目都会引用,为了不再每次使用的时候都复制一份,所以计算机上有一个位置专门存储这些我们都会用到的程序集,叫做全局程序集缓存(Global Assembly Cache,GAC),这个位置一般位于C:\Windows\Microsoft.NET\assembly和3.5之前版本的C:\Windows\assembly。
既然是共享存放的位置,那不可避免的会遇到文件名重复的情况,那么为了杜绝该类情况,规定在GAC中只能存在强名称程序集,每当CLR要加载强名称程序集时,会先通过标识去GAC中查找,而考虑到程序集文件名称一致但版本文化等复杂的情况,所以GAC有自己的一套目录结构。我们如果想将自己的程序集放入GAC中,那么就必须先签名,然后通过如gacutil.exe工具(其存在于命令行工具中 https://docs.microsoft.com/zh-cn/dotnet/framework/tools/developer-command-prompt-for-vs中)来注册至GAC中,值得一提的是在将强名称程序集安装在GAC中,会效验签名。

GAC工具: https://docs.microsoft.com/en-us/dotnet/framework/tools/gacutil-exe-gac-tool

 

延伸

CLR是按需加载程序集的,没有执行代码也就没有调用相应的指令,没有相应的指令,CLR也不会对其进行相应的操作。 当我们执行Environment.CurrentDirectory这段代码的时候,CLR首先要获取Environment类型信息,通过自身元数据得知其存在mscorlib.dll程序集中,所以CLR要加载该程序集,而mscorlib.dll又由于其地位特殊,早在CLR初始化的时候就已经被类型加载器自动加载至内存中,所以这行代码可以直接在内存中读取到类型的方法信息。
在这个章节,我虽然描述了CLR搜索程序集的规则,但事实上,加载程序集读取类型信息远远没有这么简单,这涉及到了属于.NET Framework独有的"应用程序域"概念和内存信息的查找。

简单延伸两个问题,mscorlib.dll被加载在哪里?内存堆中又是什么样的一个情况?

 

转载于:https://www.cnblogs.com/Tpf386/p/9798630.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

弹簧触摸开关原理图_10年老电工经验之谈:常见的开关电源那些事儿

随着电控系统中对控制回路安全性要求提高,控制回路的工作电压是越来越趋于直流低压化。由此,控制回路内各种使用直流电源的传感器、中小微型直流继电器等电器装置是日益增多。也正因如此,电控系统内不同品牌的开关电源也相应地多了起来。因牵…

erlang mysql连接超时_Erlang数据库-(一)Erlang与Mysql的连接

下载:http://download.csdn.net/detail/hjhjava/7088277把该文件的东西全部编译好,然后根据下面的解释就可以操作Mysql的。很简单~-record(row,{a1 0, a20}).%% 第一个参数是该链接的名字(根据它来操作Mysql),第二参数是本机号(ip地址)%% &a…

SQL SERVER 中 GO 的用法2

具体不废话了&#xff0c;请看下文详解。 12345678910use db_CSharpgoselect *,备注casewhen Grade>90 then 成绩优秀when Grade<90 and Grade>80 then 成绩良好when Grade<80 and Grade>70 then 成绩及格else 不及格endfrom tb_Grade如果只是执行一条语句&…

js中判断值不等于undefined

文章&#xff1a;JS 中判断空值 undefined 和 null转载于:https://www.cnblogs.com/Tpf386/p/9804496.html

reddit_我在3天内疯狂地审查了Reddit上的50个投资组合,从中学到了什么。

redditI’ve always enjoyed critiquing applicants’ portfolios at the design studio where I work. And I also often ask for feedback on my own designs on Reddit’s webdev subreddit.我一直都很喜欢在我工作的设计工作室里评估申请人的作品集。 我也经常在Reddit的we…

【BZOJ1001】[BeiJing2006]狼抓兔子

挺简单一个题&#xff0c;最小割模板 我的感觉就是可能建图的时候会比较麻烦吧&#xff0c;毕竟三个方向。 #include <cctype> #include <climits> #include <cstdio> #include <cstring> #include <iostream>#define debug(x) std::cout <&l…

管理活动目录域服务实训_管理学院学生党支部开展实践教育基地服务活动

红星E校有态度 有温度 可关注为进一步加强党的建设&#xff0c;深化管理学院学生党支部与实践基地的互动性&#xff0c;2020年9月11至12日&#xff0c;管理学院学生党支部协助白鹤村村委实践基地完成第七次人口普查相关工作&#xff0c;共计6名预备党员参与。工作开始前的培训会…

mysql 汉编码 的选_peewee连接mysql汉语言数据编码_mysql

peewee连接mysql中文数据编码系统是win7 x64python 2.7.6的site.py里面编码设定为 utf-8py文件首行指定 #coding:utf-8mysql 5.5.38安装时指定代码为utf-8peewee的连接数据库代码为&#xff1a;db MySQLDatabase(host 127.0.0.1, user root, passwd 1, database mz, chars…

配置windows失败,还原更新,请勿关机

最近给同事装系统&#xff0c;偶尔会出现如下问题&#xff1a; 如果是这种情况&#xff0c;只能耐心等待了&#xff0c;因为关机也没用&#xff01; 转载于:https://www.cnblogs.com/lijy/p/5327844.html

使用Express和MongoDB构建简单的CRUD应用程序

by Zell Liew由Zell Liew 使用Express和MongoDB构建简单的CRUD应用程序 (Building a Simple CRUD Application with Express and MongoDB) For a long time, I didn’t dare venture into back end development. I felt intimidated because of my lack of an academic backgr…

python元类的使用_python中元类用法实例

本文实例讲述了python中元类用法&#xff0c;分享给大家供大家参考。具体方法分析如下&#xff1a;1.元类(metaclass)是用来创建类的类2.type(object):返回一个对象的类型&#xff0c;与object.__class__的值相同&#xff0c;type(name,bases,dict):创建一个新的type类型&#…

使用uicollectionView时需要注意的问题

1.UICollectionView使用流水布局——UICollectionViewFlowLayout时&#xff0c;需要满足条件&#xff1a; 每个item(即cell)的大小是一样的&#xff0c;不仅是宽度&#xff0c;还有高度。这样&#xff0c;当collectionview的宽度发生变化时&#xff0c;item能将其动态填充。ite…

hiveql函数笔记(二)

1、数据查询 //提高聚合的性能 SET hive.map.aggrtrue; SELECT count(*),avg(salary) FROM employees; //木匾不允许在一个查询语句中使用多于一个的函数&#xff08;DISTINCT。。。&#xff09;表达式 SELECT count(DISTINCT symbol) FROM stocks; 表生成函数&#xff1a; exp…

jQuery 常用的方法

<!DOCTYPE html><html lang"en"><head> <meta charset"utf-8"/> <title>品牌列表案例</title> <script src"js/jquery-2.1.1.min.js" rel"script"></script> <script…

swift 从手机选照片_19元起!定制专属手机壳!还可免费打印照片...

△剧透&#xff1a;文末有福利现在的年轻人体内涌动的都是追求有趣有特色的灵魂希望自己是这条gai最独一无二的仔撞衫撞包撞手机壳可以说是当代年轻人三大时尚忌讳尤其是手机壳极为重要毕竟换壳≈换机只需要几十元买新壳就可以拥有换新机般的仪式感不过作为手机壳老手都知道在某…

新手也能学会本地调试微信,natapp 官网映射

本地调试微信的新手指引~ 照着配置&#xff0c;一定可以配置成功&#xff0c;实现本地调试微信&#xff0c;公司好几个同事按照我写的步骤&#xff0c;都独立配成功了。 1.首选在natapp注册一个账号&#xff0c;申请免费隧道或者购买隧道&#xff0c;我买了一个月9元的付费隧道…

在JavaScript中反转字符串的三种方法

This article is based on Free Code Camp Basic Algorithm Scripting “Reverse a String”本文基于Free Code Camp基本算法脚本“ Reverse a String ” Reversing a string is one of the most frequently asked JavaScript question in the technical round of interview. …

c实现三角形角度大于一个值_初中数学三角形知识点小结

▊ 三角形两边定理&#xff1a;三角形两边的和大于第三边。推论&#xff1a;三角形两边的差小于第三边。▊ 三角形中位线定理三角形的中位线平行于第三边&#xff0c;并且等于它的一半。▊ 三角形的重心三角形的重心到顶点的距离是它到对边中点距离的2倍。在三角形中&#x…

【Spring】使用Spring和AMQP发送接收消息(下)

为什么80%的码农都做不了架构师&#xff1f;>>> 上篇讲了RabbitMQ连接工厂的作用是用来创建RabbitMQ的连接&#xff0c;本篇就来讲讲RabbitMQ的发送消息。通过RabbitMQ发送消息最简单的方式就是将connectionFactory Bean注入到服务层类中&#xff0c;并使用它创建C…

微软u盘安装工具_使用微软Winget工具安装软件教程

对于系统管理员来说&#xff0c;一款好用的软件包管理工具可以大大提高安装、部署、管理软件的效率。可之前只有 MscOS 和 Linux 官方才有软件包管理工具&#xff0c;微软官方现在终于为Windows系统发布了一款名为Winget的软件包管理工具&#xff0c;MS酋长下面就来为大家演示一…