2013-03-17 16:22 by 左眼微笑右眼泪, 171 阅读, 0 评论, 收藏, 编辑
在介绍这个工具前,先介绍一下GAC(Gloabal Assembly Cache)全局程序集缓存。对于.NET3.5和以前的版本,GAC通常位于以下目录:C:\Windows\assembly,对于.NET4.0,GAC位于以下目录:C:\Windows\Microsoft.NET\assembly。

  GAC到底是个啥呢?如果一个程序集要有多个应用程序访问,那么就必须把这个程序集放到一个已知的目录中,而且CLR在检测到对该程序集的一个引用时,必须知道自动检查该目录。这个已知的目录就叫做GAC。就比如我们经常使用的System.Windows.Forms.dll,System.Data.dll,很多程序都会用到,但是我们却在Bin目录没有找到它们,它们就在GAC里面,应用程序运行的时候,会自动到这个目录中去寻找。在GAC中“注册”程序集的目录是什么?如果有两家公司分别分成了名称相同的dll,那么显然这两个dll就不能放在同一目录下,但是如果将程序集安装到GAC目录下,就会在GAC目录下创建专门的文件夹,它们会在不同的文件夹里面,就不会出现上面说的这种情况。先来看看C:\Windows\assembly目录

   里面都是我们没有见过的文件类型,只可以看到文件名,点击右键,我们可以卸载这个程序集,但怎么把一个程序放在这个目录下呢。很多人可以想直接放进行就行,确实可以直接拖进去,拖进去它就会把这个文件安装到这个目录下。但这不是建议的做法,建议的方法就是使用即将介绍的工具GACUtil.exe这个工具。因为GAC是目录化的,其中包含很多子目录,在这里看不出来。这些子目录的名称都是通过一个算法生成的,GACUtil.exe这个工具知道GAC的内部结构,并知道如何生成正确的子目录名。GACUtil.exe这个工具一般在C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin目录下。双击这个exe,它会显示一些东西,然后一闪而过,可以通过cmd打开这个工具,界面如下:

  上面显示的是它的用法,我们可以通过开关/i和开关/u来分别添加和卸载程序集。注意不能将一个弱命名的程序集放到GAC中去,如果用这个工具安装一个弱命名程序集,它会报错。如果我们想拷出GAC里面的dll,该怎么办?如果对.NET3.5以下的版本,GAC在这个目录下C:\Windows\Microsoft.NET\assembly,里面的结构我们看不到,也不能拷贝。可以有以下几个方法:一是使用DOS命令,定位到这个目录下,它会自动显示这个目录下的所有子目录,然后通过命令进行拷贝。可以看到这个目录下面有很多文件夹。通过Copy命令去拷贝里面的dll。

  第二种方法就是使用压缩软件,把这个目录放压缩软件的地址栏,按下“确定”就可以看到里面的目录结构,也可以看到里面的文件,直接右键复制文件即可。(这种方法我实验过不行,我在win7中32位中,输入的是.NET3.5框架的GAC目录,不知道是否在win7系统中做了改进)。这里面有一篇介绍的文章,里面还介绍了其他的方法,可以参考下拷出GAC里面的dll上面的都是对于.NET3.5的GAC目录来操作的,对于.NET4.0,GAC位于以下目录:C:\Windows\Microsoft.NET\assembly。直接打开这个目录:

  可以看到,里面直接把目录列出来了,打开里面的目录,出现了很多文件夹,里面可以找到我们经常使用的一些引用:

   打开某个目录,可以直接右键复制相应的dll。

   由此可知,对于.NET4.0的GAC目录,是可以直接查看文件里面的结构,并且复制里面的文件,而对于.NET3.5的GAC目录,则需要通过其他的方式查看里面的文件。不过不管哪一个版本的GAC目录,往里面添加dll以及卸载dll,最好都使用GACUtil这个工具。

另外微软MSDN上有对这个工具的详细介绍,具体可参考:GACUtil.exe(全局程序集缓存工具)

  还有一些需要注意的就是(参考自《CLR via C#》):

1.只能把有强名称的程序集安装到GAC中,否则安装过程中会出错;

2.将程序集安装到GAC中,会破坏一个基本目标:简单地安装,备份,还原,移动和卸载应用程序,所以,建议程序员习题避免全局部署,尽量使用私有部署。

.NET工具篇(二)—GACUtil相关推荐

  1. 群辉服务器更新系统教程,男人的生产力工具 篇二百四十六:新手玩转群晖NAS:一步一步教你更新群晖DSM系统...

    男人的生产力工具 篇二百四十六:新手玩转群晖NAS:一步一步教你更新群晖DSM系统 2020-08-05 10:46:03 18点赞 175收藏 59评论 新手与新知男人的生产力工具 篇二百三十九:新 ...

  2. 模拟网页行为之工具篇二

    先说360浏览器,打开开发者选项,可以看到界面提供了几个功能选项,如图: 这个图片的第一个搜索图标点中过后,再去选中网页你感兴趣的部分就可以在Element选项中跳转到你感兴趣的代码.也可以直接ctr ...

  3. 99数据集预处理_深度学习在放射治疗的应用—工具篇(五)数据集构建

    家园宗旨:诚邀八方志同道合之友,共谋一隅传道受业之善! 作者简介: 本期我们将继续介绍Matlab中的数据集系列函数.上期中我们介绍了imageDatastore数据集函数,该函数能够实现深度学习所需 ...

  4. SQL Server 大数据群集 部署(二)工具篇

    SQL Server 大数据群集 部署(二)工具篇 在进行部署大数据群集之前,先要安装一系列的工具,下表列出了常用的大数据群集工具以及如何安装它们: 工具 Required Description 安 ...

  5. 安装Ubuntu后必须要做的几件事(二)--开发工具篇

    链接 链接 安装Ubuntu后必须要做的几件事(一)–基础应用篇 安装Ubuntu后必须要做的几件事(二)–开发工具篇 终端的乐趣–Linux下有趣的终端命令或者工具 Ubuntu使用apt-file ...

  6. 华为战略方法论:BLM模型之市场洞察-五看工具篇(二)

    目录 1. 前言 2. 专栏列表 3. 工具三:行业生命周期模型 1. 前言 欢迎大家继续来到华为战略方法论系列内容. 今天继续介绍市场洞察篇的延伸内容 -- 五看工具篇(二). 完整合集内容会结合  ...

  7. Revit二次开发入门教程一(工具篇)

    对BIM开发感兴趣的读者可以关注我的BIM开发系列教程 什么是BIM开发?这篇文章可以告诉你 Revit二次开发教程提纲 Revit二次开发编程入门一(工具篇) 前言 BIM诞生的背景 Revit在B ...

  8. 读取图像矩阵维度必须一致_深度学习在放射治疗中的应用——工具篇(二)矩阵基本操作...

    我们在这期继续为大家介绍Matlab中关于图像的一些基本概念与操作.上期我们简单介绍了矩阵的生成方式,这里详细说明矩阵的基本定义.首先矩阵大小可以用"size"函数查看,其中返回结 ...

  9. 测试面试题集锦(二)| 测试工具篇(附答案)

    本文为霍格沃兹测试学院学员学习笔记. 本系列文章总结归纳了一些软件测试工程师常见的面试题,主要来源于个人面试遇到的.网络搜集(完善).工作日常讨论等,分为以下十个部分,供大家参考.如有错误的地方,欢迎 ...

  10. 运动控制器编程_快速入门 | 篇二十一:运动控制器ZHMI组态编程简介一

    点击上方"正运动小助手",随时关注新动态! 运动控制器ZHMI组态编程简介一  今天我们来学习一下,运动控制器的ZHMI组态编程简介.本文主要从产品概述.控制器连接触摸屏使用.HM ...

最新文章

  1. 用计算机能改装成万用表吗,用旧手机电池修改万用表
  2. linux连sql server
  3. 好想学python机器人_【Python成长之路】从零学GUI -- 制作智能聊天机器人
  4. Vue——组件化开发DEMO
  5. Grafana分析Nginx日志
  6. 搭建自己的base.js(2)-其他事件方法
  7. android java 同步_Android 中的同步
  8. IPTV软件如何做自己的广告系统?
  9. win7黑苹果双系统隐藏Clover多余启动项
  10. 甲每秒跑3米,乙每秒跑4米,丙每秒跑2米,三人沿600米的环形跑道从同一地点同时同方向跑步,经过多少时间三人又同时从出发点出发?
  11. zblog php 分类页,zblog怎样实现不同分类页调用不同页面模板和样式
  12. 网站老被劫持快照被黑怎么修复解决
  13. 一文读懂图像三原色原理
  14. 1833. 雪糕的最大数量-每日一题
  15. 华为设备端口操作命令
  16. git 命令 简单介绍
  17. jQuery.NiceScroll - 有史以来最好的 nicescroll 版本——在现代浏览器和移动设备上极其流畅和一致,资源使用率低(中文文档)
  18. AI Multiple 力荐2022年十大开源工作流调度和 WLA工具,Apache DolphinScheduler 在列!...
  19. 热量传递的三种基本方式
  20. 响应式Web图形设计 ([美]Christopher Schmitt) 中文pdf扫描版

热门文章

  1. STM32 USB HID的GET_REPORT 与 SET_REPORT请求
  2. 传奇攻城期间禁止玩家下地图打怪的脚本写法
  3. GPU显卡服务器有什么作用,可应用哪些方面呢
  4. Caffe windows下安装攻略
  5. 思维导图工具之Freeplane(上篇)
  6. vios接口虚拟服务器,虚拟VIOS服务器安装手册V1.0
  7. 求一个数的最大真约数
  8. 【Linux】一步一步学Linux——atq命令(139)
  9. 2021年度总结—四非计算机保研经历(参营:清华网研院、中科大先研院、华师大数据科学院、厦大计算机系、上科大信息学院)
  10. 解决《CPU设计实战》第四章实践交叉编译时报错mipsel-linux-ld: section .MIPS.abiflags LMA overlaps section .data LMA