深圳市seo网站设计长沙微网站

web/2025/10/3 0:43:16/文章来源:
深圳市seo网站设计,长沙微网站,检察门户网站建设自查报告,东莞做网站公司哪家好http://www.cnblogs.com/smallstone/archive/2010/06/29/1767508.html 一、GAC的作用 全称是Global Assembly Cache作用是可以存放一些有很多程序都要用到的公共Assembly#xff0c;例如System.Data、System.Windows.Forms等等。这样#xff0c;很多程序就可以从GAC里面取得… http://www.cnblogs.com/smallstone/archive/2010/06/29/1767508.html 一、GAC的作用       全称是Global Assembly Cache作用是可以存放一些有很多程序都要用到的公共Assembly例如System.Data、System.Windows.Forms等等。这样很多程序就可以从GAC里面取得Assembly而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面。举例而言如果没有GAC那么势必每个WinForm程序的目录下就都要从C:\WINDOWS\Microsoft.NET\Framework\vX下面拷贝一份System.Windows.Forms.dll这样显然不如都从GAC里面取用方便也有利于Assembly的升级和版本控制。 二、强命名程序集      因为不同的公司可能会开发出有相同名字的程序集来如果这些程序集都被复制到同一 个相同的目录下最后一个安装的程序集将会代替前面的程序集。这就是著名的Windows “DLL Hell”出现的原因。   很明显简单的用文件名来区分程序集是不够的CLR需要支持某种机制来唯一的标识一个程序集。这就是所谓的强命名程序集。   一个强命名程序集包含四个唯一标志程序集的特性文件名没有扩展名版本号语言文化信息如果有的话公有秘钥。   这些信息存储在程序集的清单manifest中。清单包含了程序集的元数据并嵌入在程序集的某个文件中。   下面的字符串标识了四个不同的程序集文件   “MyType, Version1.0.1.0,   Cultureneutral, PublicKeyTokenbf5779af662fc055”   “MyType, Version1.0.1.0,   Cultureen-us, PublicKeyTokenbf5779af662fc055”   “MyType, Version1.0.2.0,   Cultureneturl, PublicKeyTokenbf5779af662fc055”   “MyType, Version1.0.2.0,   Cultureneutral, PublicKeyTokendbe4120289f9fd8a”   如果一个公司想唯一的标识它的程序集那么它必须首先获取一个公钥/私钥对然后将共有秘钥和程序集相关联。不存在两个两个公司有同样的公钥/私钥对的情况正是这种区分使得我们可以创建有着相同名称版本和语言文化信息的程序集而不引起任何冲突。   与强命名程序集对应的就是所谓的弱命名程序集。其实就是普通的没有被强命名的程序集。两种程序集在结构上是相同的。都使用相同的PE文件格式PE表头CLR表头元数据以及清单manifest。二者之间真正的区别在于强命名程序集有一个发布者的公钥/私钥对签名其中的公钥/私钥对唯一的标识了程序集的发布者。利用公钥/私钥对我们可以对程序集进行唯一性识别、实施安全策略和版本控制策略这种唯一标识程序集的能力使得应用程序在试图绑定一个强命名程序集时CLR能够实施某些“已确知安全”的策略比如只信任某个公司的程序集。 三、如何创建强命名程序集, 如何查看强命名程序集的PublicKeyToken 如何创建强命名程序集 1. 在Visual Studio中的class library工程上点右键, 选择properties. 2.  选择左边的Signing选项卡. 3. 勾选Sign the assembly复选框. 在下拉列表中选择New.... 4. 在弹出的对话框中给snk文件起一个名字. 按OK. 5. 程序集强命名完成. 如何查看强命名程序集的public key token 有时候你需要在web.config文件中或者其他地方引用自己写的强命名程序集, 你需要写入像下面这样的fully qualified name: MyNamespace.MyAssembly, version1.0.3300.0, Cultureneutral, PublicKeyTokenb77a5c561934e089 前面三个部分比较容易获得, 因为是你自己写的, 你当然知道assembly的名字, 版本, 还有culture信息. 比较麻烦的部分是如何获得自己签名的程序集的public key token. 一种平常的方法是使用Reflector来打开自己的程序集, 然后获得token(实际上, Reflector会给你如同上面例子那样的完整信息). 但是这有的时候还是显得有点未免杀鸡用牛刀了. 如果你已经打开了Visual Studio, 那么仅仅是在VS的菜单里点一个菜单项就能获得答案不是更好么? 下面就是步骤. 1. 在Visual Studio中, 打开Tools菜单, 然后点击External Tools这个菜单项. 2. 在弹出的External Tools对话框中, 点击Add按钮. 3. 按照下图进行配置. sn.exe这个工具在不同版本的VS下处于不同的文件夹中. 最简单的找到它的方式是在VS Command Prompt中输入where sn.exe. 在参数框里写入-T $(TargetPath). 然后勾选Use Output Window. 这样的话, 结果就会在VS的output window. 然后点击OK, 4. 结果如图. 5. 在输出窗口可以看到结果. 这在你的solution里有多个project的时候也是可以正常工作的. 只需要点击一下Solution Explorer中的Project, 然后点击我们的菜单项就可以了. 四、如何将自己的dll注册到GAC中 在开发和测试中最常用的工具就是GACUtil.exe。 在GAC中注册程序集跟COM注册差不多但相对更容易    1把程序集添加到GAC中 GACUtil /i sample.dll 参数/i是安装的意思    2把程序集移出GAC GACUtil /u sample.dll 参数/u就移除的意思注意不能将一个弱命名程序集安装到GAC中。如果你试图把弱命名程序集加入到GAC中会收到错误信息”    Failure adding assembly to the cache: Attempt to install an assembly without a strong name”    d)强命名程序集的私有部署 例子 C:\Program Files\Microsoft Visual Studio 8\VCgacutil -i F:\myweb\BalloonShop\ClassLibrary1\bin\Debug\ClassLibrary1.dll 在C:\WINDOWS\assembly将会看到ClassLibrary1注册成功 五、查看GAC文件内容以及将DLL复制出来 在项目中我们常常会引入第三方的dll一般情况下我们都可以将所需的dll文件复制到硬盘上的一个地方然后在项目中添加引用这个操作很简单但有时候我们会遇到这样的情况就是所要引用的dll在目标机器的GAC里这时我们就不能手动将它拷贝出来了。       其实Windows的GAC是有对应的目录的一般来说为c:\Windows\assembly\这个目录有一些特殊它里面存放的是本机已安装和注册的类库dll并且不允许用户直接对其中的元素进行相关操作如复制、剪切、粘贴、修改名称等不过你可以直接将另一位置的dll文件直接拖放到这个目录下进行dll的安装但是我们不能直接将已经安装进去的dll再拷贝出来。这里我将介绍一种方法来完成这个操作。 首先我们切换到Windows的命令行方式即开始-运行-cmd-回车然后转到GAC所在的目录利用dir命令查看一下其中的内容如下图。 似乎可以明白GAC中的目录结构了基本上我们可以根据GAC目录中的Processor Architecture列来区分dir的类型例如我们要找的System.Web.Extensions属于MSIL在CMD方式下它应该就对应GAC_MSIL然后切换到这个目录下并dir。 看到我们要找的System.Web.Extensions程序集了它也是一个dir继续切进去并dir。 这时只有一个目录了继续切进去然后dir就可以看到我们最终想要的dll文件了然后通过copy命令将它复制出来就OK了 小技巧在CMD方式下使用命令时如果要输入的文件名或目录名太长可以先敲部分字符然后通过Tab键自动补全Windows的command工具会自动为你找到相匹配的内容 六、例子 如上图所示新建了2个类库文件ClassLibrary1、ClassLibrary2 1、使用上面的第三点创建了强类型程序集ClassLibrary1并且注册到GAC中(可以使用上面第三点的方法也可以使用反编译器进行反编译可以查看到PublicKeyToken值。ClassLibrary2为null,ClassLibrary1为568e03e6162a7a2e)。 2、在DataAccess中引用ClassLibrary1、ClassLibrary2编译DataAccess。 3、进入DataAccess工程的bin\debug文件夹下只有ClassLibrary2.dll与DataAccess.dll没有ClassLibrary1.dll 由此可知程序是从GAC中直接取得ClassLibrary1.dll的而不是从ClassLibrary1工程中将ClassLibrary1.dll拷贝到自身的debug中进行引用。转载于:https://www.cnblogs.com/zuiyirenjian/archive/2012/06/09/2543553.html

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

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

相关文章

企业服务网站淘宝网站首页怎么做

Anacond的介绍 Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。 因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB),如果只需要某些包,或者需要节…

html5 企业网站可以全部免费观看的平台

第一步 获取root权限 配置环境等都需要用到root权限,所以我们先获取到root权限,方便下面的操作 下载软件 在UOS应用商店下载的所需应用 版本都比较低 安装node 官网下载了【arm64】的包,解压到指定文件夹,设置链接&#xff0…

大连网站建设培训班制作网页的工具主要有哪些

在过去的十年中,出现了许多涉及计算机视觉(CV)的项目,无论是小型的概念验证项目还是更大规模的生产应用。应用计算机视觉的方法是相当标准化的: 1、定义问题(分类、检测、跟踪、分割)、输入数据(图片的大小和类型、视野)和类别(正是我们想要的) 2、注释…

忘记网站后台用户名高端网站建设哪家更专业

联合体 联合体的创建 联合体的关键字是union union S {char a;int i; };除了关键字和结构体不一样之外,联合体的创建语法形式和结构体的很相似,如果不熟悉结构体的创建,可以看一下我上一篇的博客关于结构体知识的详解。 联合体的特点 联合…

路由器做网站80端口公众号登陆入口

1.跳跃游戏 原题:力扣55. 逐步判断下一步的覆盖范围,根据范围去推断是否能到达终点,不用计较每一步走到哪里。 public boolean canJump(int[] nums) {// 题目规定 nums 长度大于等于1if (nums.length 1) {return true;}int cover 0;// f…

家装网站设计漂亮的网站

一、工业级 S25HS01GTDPBHV030 Semper™ NOR闪存 S25HS01GT SEMPER™ NOR Flash闪存系列是英飞凌高性能、安全而可靠的 NOR Flash解决方案。 它集成了适用于汽车、工业、通信等广泛应用的关键安全功能。 凭借 SEMPER™ NOR Flash闪存,英飞凌推出了业界首款符合 ASI…

外贸关键词网站免费网站如何做推广

前言 自2021年中国人民银行发布《金融科技发展规划(2022-2025年)》以来,商业银行迈入数字化转型的高阶阶段。在此背景下,为了进一步提高金融科技的管理水平,商业银行需要改变传统金融运维模式,对已有运维体…

网站建设流程发布网站和网页制作济南做网络推广

水一贴。 在浏览器中按F12点击"source"或者"源程序"点击html、js、css等源码文件所在的窗口的左边,此时点击处显示为蓝色光标,表示断点中断已经设置完毕。配合窗口右上角的"继续" “下一步” "跳过"等控制按钮…

沈阳蓝德网站建设网站对齐原则

linux系统启动过程 启动过程可以分为6步:POST–>BIOS–>MBR(GRUB)–>Kernel–>Init–>Runlevel。POST为Power On Self test,MBR(GRUB)其实也可以分开来讲,MBR的作用是去引导记录,为GRUB做准备。 各过程解析 POS…

南京企业网站搭建wordpress 仿雷锋

从先序与中序遍历序列构造二叉树 描述: 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 递归法 解题思路: 通过先序遍历我…

网站模板案例怎么建立信息网站平台

1 std::mutex 的基础概念 1.1 std::mutex 的定义与声明 std::mutex 是 C11 标准库中的一个互斥量(mutex)类,用于保护共享资源的并发访问。在多线程环境中,当多个线程试图同时访问和修改同一资源时,可能会发生数据竞争…

金融网站开发目的集团网站推广

来源:DeepTech深科技人脑中,数以千计的神经元间电信号交替传送不断,而长短不一的树突(神经元胞体延伸)在神经元信息整合中起到了关键作用,由此我们的大脑细胞才能正常反应运作。而这次,MIT 的神…

新建网站软件如何做网站免费搭桥链接

矩阵是线性代数课学习的重点内容之一,也是线性代数常见工具之一,在应用数学、统计分析、计算机科学、计算机图像处理级物理等多学科中均有应用。矩阵主要是指数据的行列排列的形式,由行row与列col所组成,在数学中M*N矩阵是指具有M…

太原建站模板源码阳江市网络问政平台登录

编辑 | 萝卜皮格拉斯哥大学(University of Glasgow)的研究人员提出了一种自主化学合成机器人,用于探索、发现和优化由实时光谱反馈、理论和机器学习算法驱动的纳米结构,这些算法控制反应条件并允许选择性地模板化反应。这种方法允…

企业网站建设服务内容瑞安营销网站建设

文章目录1. 比赛结果2. 题目1. LeetCode 5420. 商品折扣后的最终价格 easy2. LeetCode 5422. 子矩形查询 medium3. LeetCode 5423. 找两个和为目标值且不重叠的子数组 medium4. LeetCode 5421. 安排邮筒 hard1. 比赛结果 两题选手😂,前两题很水&#xf…

上海哪家网站建设公司好网站域名是什么

Array.prototype.forEach MDN解释forEach()方法是对数组的每个元素执行一个给定的函数,换句话来说就是在调用forEach()方法的时候,需要传入一个回调函数callback,循环每个数组内部元素时都会执行一次传入的回调函数callback forEach()方法的…

门户网站建设的企业79招商创业网

2024 7/7 转眼间就到周日啦!昨天下午开组会,开了三个半小时。如坐针毡,会后跑了个步、洗了个澡、洗了衣服、躺床上看了会《罪与罚》,睡着了。早上起来,去拿我昨晚充电的车,当我看到车没有停在昨天的位置&am…

如何建立电子商务网站网站开发设计文档

//官方的例子在质量上是有保证的,而各种教程和文档又局限于个人阅读和理解力。 进入jdk官网---找download,,,下滑鼠标----找到如: JDK 8 Demos and Samples 点击下载,,解压进入,比如…

0716网站建设前端开发课程

一、什么是IP代理与SK5代理? IP代理: IP代理是一种允许用户通过代理服务器进行网络连接的技术。用户请求经由代理服务器中转,从而实现隐藏真实IP地址,保护用户隐私,并在一定程度上突破IP访问限制。常见的IP代理有HTTP…

智能建站平台z江苏营销型网站策划

我有罪,直到现在才写集成测试(至少针对数据库相关事务)。 因此,为了消除内感,我阅读了如何在周末以最少的努力实现这一目标。 提供了一个小示例,描述了如何使用Spring和Hibernate轻松实现这一目标。 通过集…