如何生成强命名程序集及把强命名程序集注册到GAC(全局程序集缓存)中

来源:互联网 发布:淘宝改价会降权吗 编辑:程序博客网 时间:2024/04/29 11:44

 1,在VS的Cmd中用sn.exe工具生成公钥/私钥对
 例:a) sn -k MyCompany.Keys 
         该命名告诉SN.exe创建一个名为MyCompany.keys的文件。MyCompany.keys文件将包含以对以二进制格式存储的公有密钥和私有密钥。
     b)   查看公有密钥:
    首先生成一个只包含公有密钥的文件: SN –p
   MyCompany.keys MyCompany.PublicKey
   然后用-tp参数查看:SN –tp MyCompany.PublicKeys
   Public key is
 
   00240000048000009400000006020000002400005253413
 
   10004000001000100bb7214723ffc13901343df4b9c464ebf
 
   7ef4312b0ae4d31db04a99673e8163768cc0a2a7062e731d
 
   beb83b869f0509bf8009e90db5c8728e840e782d2cf928dae
 
   35c2578ec55f0d11665a30b37f8636c08789976d8ee9fe9a5
 
   c4a0435f0821738e51d6bdd6e6711a5acb620018658cce93
 
   df37d7e85f9a0104a5845053995ce8
 
   Public key token is 2dc940d5439468c2
 

创建好了公钥/私钥对,创建强命名程序集就很容易了
只需要把System.Reflection.AssemblyKeyFileAttribute特性加入到源代码中就可以了:
即引用System.Reflection命名空间;

然后在类中命名空间上面加入[assembly: AssemblyKeyFileAttribute("MyCompany.Keys")]

或者用命令行工具:al /out:MyAssembly.dll /keyfile:myKey.snk

2,
3,gacutil -i ClassLibrary1.dll注册强命名程序集到GAC(全局程序集缓存中)
4,gacutil -u ClassLibrary1 从GAC(全局程序集缓存中)卸载此名称的程序集

5,gacutil -l ClassLibrary1 从GAC(全局程序集缓存中)查看ClassLibrary1 此名称的程序集