zoukankan      html  css  js  c++  java
  • 转篇文章,VS2005开发的dll如何安装进GAC

    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   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的主要功能。  
      希望以上一些介绍能够对您有帮助。  
      Hogwarts   -   S(u)ddenly   dis@ppeared...  
      -    
      本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。  

    -------------

    总结:以前没注意,原来.net sdk还提供了不少小工具呢,想gacutil,Ngen,sn什么的,都是dos的,另外,这些小程序,copy到任意地方均可以运行!不错啊。

  • 相关阅读:
    Spark Locality Sensitive Hashing (LSH)局部哈希敏感
    Spark ChiSqSelector 卡方选择器
    图解开源协议
    如何使用Hasu USB to USB Controller Converter刷写tmk固件交换Caps和Ctrl
    使用PHP读取PHP文件并输出到屏幕上
    Mac修改显示器使支持原生缩放
    PHP中使用PDO的预处理功能避免SQL注入
    如何做数据库分页查询
    Chrome报错提示Unchecked runtime.lastError: The message port closed before a response was received.
    Parallels Desktop虚拟机无法关机提示“虚拟机处理器已被操作系统重置”
  • 原文地址:https://www.cnblogs.com/skywind/p/691284.html
Copyright © 2011-2022 走看看