Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4945696
  • 博文数量: 1696
  • 博客积分: 10870
  • 博客等级: 上将
  • 技术积分: 18357
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-30 15:16
文章分类
文章存档

2017年(1)

2016年(1)

2015年(1)

2013年(1)

2012年(43)

2011年(17)

2010年(828)

2009年(568)

2008年(185)

2007年(51)

GAC

分类: 嵌入式

2012-03-28 13:49:55

GAC(global assambly cache),全局程序集缓存

作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。

这样,很 多程序就可以从GAC里面取得Assembly,而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面。

举例而言,如果没有GAC, 那么势必每个WinForm程序的目录下就都要从C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705下面拷贝一 份System.Windows.Forms.dll,这样显然不如都从GAC里面取用方便,也有利于Assembly的升级和版本控制。

可以同名,但是版本必须不同

C:\Windows\assembly---我的机器,程序集地址,win7 32bit

除了系统默认放置在GAC中的Assembly如System.Windows.Forms以外,我们也可以添加自己的Assembly:

1.创建一个strong-name的Assembly,例如ToolbarComponent.dll
2.运行gacutil -i ToolbarComponent.dll,把这个Assembly添加到GAC

卸载方法就是用gacutil -u [myassebly]

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。

.NET Framework中附带了一些和GAC有关的工具,其中包括:
1)Gacutil.exe,一个命令行的工具,用于在GAC中浏览、添加、删除Assembly
2)Ngen.exe,也是一个命令行的工具,用于在GAC中创建Native Image
3)mscorcfg.msc,一个MMC终端,可以图形化完成Gacutil.exe的主要功能。
阅读(918) | 评论(0) | 转发(0) |
0

上一篇:WinRT demystified

下一篇:Http和Socket连接区别

给主人留下些什么吧!~~