强程序集名称 & GAC 介绍

 
使用强名称的步骤:
1、创建密匙文件(.snk文件),打开vs command,输入:sn.exe -k 密匙文件名称.snk
2、将密匙文件加入到工程中csc /t:library /keyfile:MyKey.snk MyType.cs
3、创建强名称程序集。两种方式:
    1、我们可以在源文件中使用AssemblyKeyFileAttribute,     [assembly: AssemblyKeyFileAttribute("MyKey.snk")]
    namespace PowerNameAssembly
    {
        /// <summary>
        /// 强名称程序集
        /// </summary>
        public class TestClass
        {
            public void TestMethod()
            {
                //TODO::
            }
        }
    }
    2、使用csc.exe, 建议使用命令行选项来代替此特性。所以此处使用csc.exe:
        csc /t:library /keyfile:密匙文件名称.snk 要进行签名的文件.cs

    运行后得到 MyType.dll ,我们可以显示其中包含的公钥标记,看是否和上面的相

    sn -Tp MyType.dll

4、编译之后,公匙的内容你嵌入到了程序集,程序集内容经过散列编码后,再使用密匙签名,也嵌入到了程序集中

note:
1、如果要查看密匙文件中的公匙内容(私匙不允许查看),输入:sn -tp 密匙文件名称.snk
2、提取公匙内容: sn -p 公匙文件名称.snk 密匙文件名称.snk
 
 
 
 
 
 
 
(二)GAC的使用,
    GAC:全局程序集缓存,具有GAC的服务器必须安装公共语言运行库,GAC负责存储指定给计算机中应用程序共享的程序集,仅仅是在需要使用共享程序集时才会放置到GAC中。
   
    将Assembly放置到GAC中四种方式:
    1、使用Command,比较适合开发阶段使用:gacutil.exe /i Assembly名称.dll
    2、使用Windows installer去发布到GAC中,比较适合部署阶段使用。
    3、使用NET Framework 配置工具 (Mscorcfg.msc)。具体介绍:http://msdn.microsoft.com/zh-cn/library/2bc0cxhc.aspx
    4、使用 Windows 软件开发工具包 (SDK) 提供的名为程序集缓存查看器 (Shfusion.dll) 的 Windows 外壳扩展,使用该外壳扩展可将程序集拖放到全局程序集缓存中,
 
    GAC将assembly存放在:系统盘符:\Windows\system\ 中,从中可以看出.net framework其实也使用了GAC,里面内含了很多.net的dll,就是那些我们可以直接使用但是不用
    using 的assembly,例如:System.Net

(三)给程序集强命名
1 ,生成一个KeyFile


    sn -k keyPair.snk


2, 得到程序集的MSIL


      ildasm SomeAssembly.dll /out:SomeAssembly.il


3 ,为了避免冲突,把原来的DLL文件改名


      ren SomeAssembly.dll SomeAssembly.dll.orig


4 , 使用导出的MSIL和刚创建的KeyFile生成一个新的的DLL文件。

     ilasm SomeAssembly.il /dll /key= keyPair.snk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值