门户网站免费建设,建站设计公司,网奇seo培训官网,龙南城市建设局网站是的#xff0c;GAC中的所有的Assembly都会存放在系统目录%winroot%/assembly下面。放在系统目录下的好处之一是可以让系统管理员通过用户权限来控制Assembly的访问。 关于GAC本身#xff0c;上面redcaff_l所引述的一段话正是MSDN中对GAC的定义。GAC全称是Global A…是的GAC中的所有的Assembly都会存放在系统目录%winroot%/assembly下面。放在系统目录下的好处之一是可以让系统管理员通过用户权限来控制Assembly的访问。 关于GAC本身上面redcaff_l所引述的一段话正是MSDN中对GAC的定义。GAC全称是Global Assembly 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的升级和版本控制。 除了系统默认放置在GAC中的Assembly如System.Windows.Forms以外我们也可以添加自己的Assembly 1创建一个strong-name的Assembly例如ToolbarComponent.dll 2运行gacutil -i ToolbarComponent.dll把这个Assembly添加到GAC 3在程序中动态装载 System.Reflection.Assembly assAssembly.Load(ToolbarComponent, Version1.0.934.20434, Cultureneutral, PublicKeyToken65f45658c8d4927f); 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有关的工具其中包括 1Gacutil.exe一个命令行的工具用于在GAC中浏览、添加、删除Assembly 2Ngen.exe也是一个命令行的工具用于在GAC中创建Native Image 3mscorcfg.msc一个MMC终端可以图形化完成Gacutil.exe的主要功能。