安装assembly/dll到GAC

参考:https://www.cnblogs.com/zhaow/p/10177542.html
https://www.cnblogs.com/OpenCoder/p/8082654.html
https://docs.microsoft.com/en-us/dotnet/framework/tools/gacutil-exe-gac-tool

GAC(Global Assembly Cache)----全局程序集缓存
一般是想把dll安装部署到GAC中,以便其他程序调用,被放入到GAC中的dll,无论在何处被其他程序集引用,都可以保证自己能被CLR找到并且加载。
在一般情况下,GAC具有如下优点:
· 程序集被多处引用时,可有效减少内存成本。
· 通过发布者策略可以有效地发布程序集的最新版本。
· 同一程序集的多个版本可以共存,并且可以通过配置进行切换。
是否所有的程序集都可以被放入GAC中呢,答案是否定的。

添加到GAC步骤:

  1. 给dll 项目加强名称:
    1.1 获取强签名密钥:(提前已经有了直接在1.2中引用)
    使用sn.exe工具生成。此工具位于.Net Framework SDK 文件夹bin目录下 (eg.C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools)
    打开cmd,运行命令行 sn -k "[DriveLetter]:[DirectoryToPlaceKey][KeyName].snk"
     即: sn -k "生成的密钥的全路径"。 如在命令行输入: sn -k D:/myKey.snk
    2.1 将密钥与项目程序集关联: 项目属性->签名->为程序集签名-> 选择强签名密钥文件 ->勾选下面delay sign (delay dign状态的dll被其他程序引用会报错)
    2.2 重新编译项目,并把编译出来的dll进行强签名。(把需要public key 的assembly属性注释掉)

  2. 把强签名后的dll添加到GAC中
    2.1 使用gacutil.exe工具安装, 该工具为.net自带工具,位于SDK目录下(eg.C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools)
    打开命令行,cd 到该工具目录下,运行 gacutil /i [dllPath\dllname.dll], 安装成功后会提示安装成功。
    2.2 其他方法:
    参考链接:https://www.cnblogs.com/zhaow/p/10177542.html

  3. 安装完之后会在 C:\Windows\Microsoft.NET\assembly下的对应版本下看到。

posted @ 2020-12-10 18:57  小宇宇啊宙  阅读(212)  评论(0编辑  收藏  举报