• C# GAC


    C# 生成强命名程序集并添加到GAC

    针对一些类库项目或用户控件项目(一般来说,这类项目最后编译生成的是一个或多个dll文件),在程序开发完成后,有时需要将开发的程序集(dll文件)安装部署到GAC(全局程序集缓存)中,以便其他的程序也可以调用。

    一、GAC的作用

          全称是Global Assembly Cache作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得Assembly,而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面。举例而言,如果没有GAC,那么势必每个WinForm程序的目录下就都要从C:WINDOWSMicrosoft.NETFrameworkvX下面拷贝一份System.Windows.Forms.dll,这样显然不如都从GAC里面取用方便,也有利于Assembly的升级和版本控制。

    注册步骤如下:

    二. 生成强程序集

      2.1 生成密钥对

         (1) 一般在VS的安装目录下 打开开发人员命令提示符。

          

         (2) 管理员权限运行开发人员命令行,输入命令生成密钥,例如: sn -k C:UsersXXXXXXDesktopGACMyDLL.key

         

    2.2 将密钥给程序集签名

           将生成的密钥文件放在任意的程序集工程根目录下:

      

      在AssemblyInfo.cs文件中添加一下内容:

      

      编译并生成DLL。

    三、 通过gacutil 将DLL注册到GAC

     注册有两个方法:

     2.1 使用“开发人员命令提示”注册:

        

    2.2 使用cmd命令行:

      这是要先将gacutil.exe及其依赖文件拷贝出来:

        

      以管理员权限运行cmd如下:

      

      至此,MyDLL.dll就已经成功添加到了GAC中了。

    3  测试验证

      3.1 在调用工程中,通过Reference -> Browse 添加MyDLL.dll

        

      3.2 调用MyDLL.dll中各种接口,并编译程序。此时,MyDLL.dll也被复制到了同目录下:

         

      3.3 此时删除该目录下的MyDLL.dll,发现CallMyDLL.exe仍能正常调用DLL中的函数。证明MyDLL.dll注册到GAC中是有效的。

    四、总结

    只有strong name的 DLL 才能被注册到 GAC 中
    GAC下的DLL名字不能重复
    GAC 的注册工具是 gacutil.exe
    “gacuntil.exe”需要管理员权限
    使用示例
    注册DLL到GAC目录
    DLL位置在 c:MyTest est.dll
    注册命令 gacutil.exe /k c:MyTest est.dll
    注册完成后可以在 gac 目录下查看到该 DLL
    卸载注册到GAC目录下DLL
    卸载GAC下DLL 只需要一个DLL名字即可
    卸载命令 gacutil.exe test
    卸载完成后,刚才注册的test.dll就会从gac目录下删除
    具体详细命令 使用 /? 或者 /h 查看帮助文档
    ————————————————
    版权声明:本文为CSDN博主「九霄梦黎」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u013813838/article/details/52886438

  • 相关阅读:
    逻辑结算的结果是什么类型?比较运算的值是什么类型?
    算术运算有哪些?逻辑运算有哪些?比较运算有哪些?
    为什么要强制类型转换?什么情况下使用强制类型转换?说说强制类型转换的优点和缺点
    Java中如何强制类型转换
    基本数据类型和引用类型的区别
    Go switch语句
    Go 循环
    Go if_else语句
    Go 包
    Go 函数
  • 原文地址:https://www.cnblogs.com/xietianjiao/p/15427714.html
Copyright © 2020-2023  润新知