`
pavel
  • 浏览: 915797 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

GAC( 全局程序集缓存)

阅读更多

计算机范围内的代码缓存,它存储专门安装的程序集,这些程序集由计算机上的许多应用程序共享。在全局程序集缓存中部署的应用程序必须具有强名称
  GAC全称是Global   Assembly   Cache,他的作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得Assembly,而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面。举例而言,如果没有GAC,那么势必每个WinForm程序的目录下就都要从C:WINDOWSMicrosoft.NETFrameworkv1.0.3705下面拷贝一份System.Windows.Forms.dll,这样显然不如都从GAC里面取用方便,也有利于Assembly的升级和版本控制。  
   
  除了系统默认放置在GAC中的Assembly如System.Windows.Forms以外,我们也可以添加自己的Assembly:  
  1)创建一个strong-name的Assembly,例如ToolbarComponent.dll  
  2)运行gacutil   -i   ToolbarComponent.dll,把这个Assembly添加到GAC  
  3)在程序中动态装载:  
  System.Reflection.Assembly   ass=Assembly.Load("ToolbarComponent,   Version=1.0.934.20434,   Culture=neutral,   PublicKeyToken=65f45658c8d4927f");  
  MessageBox.Show("Is   the   assembly   loaded   from   GAC    "+ass.GlobalAssemblyCache);  
  在上面的程序中,ToolbarComponent就是从GAC装载而不是从程序的运行目录下的dll文件中装载,程序目录下不需要放置ToolbarComponent.dll程序也能正常运行。另外,Assembly.Load()中的参数可以通过"gacutil   -l"查到。  
   
  另外,上面提到了GAC中的Assembly必须是strong-name的。创建strong-name的Assembly的步骤大致如下:  
  a)   在命令行运行“sn   -k   keyPair.snk”创建一个密钥文件。这里的sn.exe也是.NET附带的一个工具。  
  b)   在VS.NET里面修改“AssemblyInfo.cs”文件:  
  [assembly:   AssemblyDelaySign(false)]    
  [assembly:   AssemblyKeyFile("..\..\keyPair.snk")]    
  c)   编译项目,就能得到一个strong-name的Assembly。  
   
  MSDN中有一些对GAC的介绍,您可以参考:  
  1)《Assembly   Cache   Viewer   (Shfusion.dll)》  
  2)《Global   Assembly   Cache》  
   
  .NET   Framework中附带了一些和GAC有关的工具,其中包括:  
  1)Gacutil.exe,一个命令行的工具,用于在GAC中浏览、添加、删除Assembly  
  2)Ngen.exe,也是一个命令行的工具,用于在GAC中创建Native   Image  
  3)mscorcfg.msc,一个MMC终端,可以图形化完成Gacutil.exe的主要功能。

分享到:
评论

相关推荐

    操作全局程序集缓存(GAC)的.NET应用程序

    对全局程序集缓存(Global Assembly Cache简称:GAC)的操作所用EXE及生产密钥的EXE程序,压缩包中的程序类型为.NET。 sn.exe;gacutil.exe;GacKey.snk(实例)

    powershell-gac:用于查看和修改全局程序集缓存(GAC)的PowerShell模块

    全局程序集缓存(GAC)是.Net程序集的机器范围存储库。 PowerShell GAC提供了几个PowerShell命令来查看和修改GAC。 PowerShell GAC独立运行,不依赖于诸如gacutils.exe之类的工具。 PowerShell GAC使用已记录的本...

    把程序集安装到全局程序集缓存中的步骤

    这有助于防止具有相同名称的组件相互冲突或被消耗应用程序误用) 使用.net Framework 开发包中bin目录下的SN工具生成加密密钥对,例如:在D盘建立文件夹:GACkey,然后在命令行中执行:sn -k “D:\GACkey\GACkey.snk...

    PowerShell中使用.NET将程序集加入全局程序集缓存

    通常情况下,将程序集(Assembly)加入全局程序集缓存(GAC,Global Assembly Cache),可以使用GacUtil工具。只要使用/i参数,就可以把指定路径的程序集添加进GAC了。 不过由于GacUtil并不是.Net Framework的一部分...

    引用全局程序集缓存内的程序集的方法

    这与VS自带的程序集是一样的,只有运行时才使用GAC,开发时使用的程序集是则是GAC的一个副本,在.net目录下,通常是”D:\WINDOWS\Microsoft.NET\Framework\版本号\”。 对你而言解决的办法有三种: 1. 把要放到GAC的...

    DevExpress & XAF 10.1.4重编编译 - Part 2

    DevExpress & XAF 10.1.4重编编译 - Part 2

    RefExplorer:显示 .NET 程序集之间依赖关系的工具

    您甚至可以从全局程序集缓存 (GAC) 添加一个完整的文件夹或程序集。 如果任何引用损坏,则会显示详细的错误消息,并在图表中相应地标记位置。 开发环境 该解决方案可以使用 Visual Studio 2013 构建。必要的依赖项...

    .Net平台代反编译及代码分析工具,超好用

    您可以通过从计算机指定适当的文件或使用“从GAC打开”选项打开程序集,该选项为您提供全局程序集缓存中可用的条目列表。 4、.NET程序集的可靠反向工程工具 所有考虑的事情,dnSpy是一个方便的应用程序,使您能够以...

    dnSpy反编译工具v3.0.2中文版(附教程)

    您可以通过从计算机指定适当的文件或使用“从GAC打开”选项打开程序集,该选项为您提供全局程序集缓存中可用的条目列表。 4、.NET程序集的可靠反向工程工具 所有考虑的事情,dnSpy是一个方便的应用程序,使您能够以...

    dnSpy中文破解版反编译工具

    您可以通过从计算机指定适当的文件或使用“从GAC打开”选项打开程序集,该选项为您提供全局程序集缓存中可用的条目列表。 4、.NET程序集的可靠反向工程工具 所有考虑的事情,dnSpy是一个方便的应用程序,使您能够以...

    dnSpy反编译工具v3.0.2中文版(支持在线编辑NET代码,直接保存exe)

    您可以通过从计算机指定适当的文件或使用“从GAC打开”选项打开程序集,该选项为您提供全局程序集缓存中可用的条目列表。 4、.NET程序集的可靠反向工程工具 所有考虑的事情,dnSpy是一个方便的应用程序,使您能够以...

    dnSpy反编译工具v4.5.1中文版

    您可以通过从计算机指定适当的文件或使用“从GAC打开”选项打开程序集,该选项为您提供全局程序集缓存中可用的条目列表。 4、.NET程序集的可靠反向工程工具 所有考虑的事情,dnSpy是一个方便的应用程序,使您能够以...

    反编译工具dnSpy

    您可以通过从计算机指定适当的文件或使用“从GAC打开”选项打开程序集,该选项为您提供了全局程序集缓存中可用条目的列表。 .NET程序集的可靠逆向工程工具 所有事情都考虑到了,dnSpy是一个方便的应用程序,它使您...

    net学习笔记及其他代码应用

    答:程序集。(中间语言,源数据,资源,装配清单) 22.常用的调用WebService的方法有哪些? 答:1.使用WSDL.exe命令行工具。 2.使用VS.NET中的Add Web Reference菜单选项 23..net Remoting 的工作原理是什么? ...

Global site tag (gtag.js) - Google Analytics