zoukankan      html  css  js  c++  java
  • 签名有元程序集 Signed Friend Assemblies

    下面的例子演示了创建签名程序集和有元程序集。这就要求两个程序集都是强命名,在下面的例子中,两个程序集都用了同一个秘钥,也可以用不同的秘钥。

    1. 生成秘钥, 这个在前面的博客中有说明,生成秘钥文件sn.exe.

       得到了公钥密码,如图

        

    2. 创建C#文件,friend_signed_A。代码应用InternalsVisibleToAttribute 声明 friend_signed_B为有元程序集。这时要把公钥加进代码中。

    using System.Text;
    using System.Threading.Tasks;
    using System.Runtime.CompilerServices;
    
    [assembly: InternalsVisibleTo("friend_signed_B,PublicKey=0024000004800000940000000602000000240000525341310004000001000100d980f66fe7e3556e8f00bd78f66a96c9e67e12457b6e4473f7476ebaa380ba0186b8028f5734f21313b48715ab814f49fef36c155700bc87fac9a2b52b1e3d1f66f98a2a8f8583dfd0572f6743f391e1415295f599662ee5a7b184b6b020c89a5ad6ceacbbe7904aa919f1e26e2ed8059c86fd051e6a087cdfcf52af7db9b7a9")]
    
    namespace friend_signed_A
    {
        public class Class1
        {
           public void Test()
            {
                Console.WriteLine("Class1.Test");
                Console.ReadKey();
            }
        }
    }

    3. 编译签名程序集 friend_signed_A,csc /t:library /keyfile:FriendAssemblies.snk friend_signed_A.cs

    4. 创建程序集 friend_signed_B,该程序集是friend_signed_A的有元程序集,所以它可以访问friend_signed_A中internal类型的成员。并且它也需要要强命名的。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using friend_signed_A;
    
    namespace friend_signed_B
    {
        class Program
        {
            static void Main(string[] args)
            {
                Class1 inst = new Class1();
                inst.Test();
            }
        }
    }

    5. 编译并给friend_signed_B签名。csc /keyfile:FriendAssemblies.snk /r:friend_signed_A.dll /out:friend_signed_B.exe friend_signed_B.cs

    6. 直接运行friend_signed_B.exe

  • 相关阅读:
    [视频监控]用状态机图展示Layout切换关系
    初次打开mysql5.6后
    eclipse 项目乱码
    java servlet 中遇到的编码问题
    解决HttpServletResponse输出的中文乱码问题
    The first day of my Blog
    最大子段和
    LOI 54 成立一周年纪(zuo)念(si)
    水题 逆序对 NOIP 2013 火柴排队
    搜索 由浅入深 之一 水题
  • 原文地址:https://www.cnblogs.com/xiao9426926/p/6018473.html
Copyright © 2011-2022 走看看