1. 生成snk(如果有则跳过):

    sn -k MyKeyPair.snk
  2. 生成公钥文件

    sn -p MyKeyPair.snk MyKeyPair.Public.snk
  3. 显示公钥

    sn -tp MyKeyPair.Public.snk

  1. 反汇编 DLL

    ildasm /all /out:Assembly.il YourAssembly.dll
  2. 修改 IL 文件
    在生成的 Assembly.il 文件中添加强名称密钥引用:

    .assembly YourAssembly
    {
      .publickey = (生成的公钥令牌)
      .ver 1.0.0.0
    }

    如:

      .publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00   // .$..............
                 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00   // .$..RSA1........
                 17 51 79 E3 E5 00 53 AA 1D 7C 9D 09 31 0D D2 AE   // .Qy...S..|..1...
                 CD 6E 80 FF C7 33 14 9E CD 64 AA 2E F1 D0 A7 0C   // .n...3...d......
                 BF 92 D4 70 E1 7E 42 60 AF 61 21 63 5F 68 03 07   // ...p.~B`.a!c_h..
                 A2 A3 B3 96 AC BC 38 BC 46 19 33 D9 9D 30 07 21   // ......8.F.3..0.!
                 FC 8D FC 8F 89 C0 8A 33 80 69 59 3B 36 54 3F A2   // .......3.iY;6T?.
                 5F 1D CF 63 44 43 2C 40 E0 4D CB 1D 1C 18 DB C5   // _..cDC,@.M......
                 14 DC C9 A6 35 AF 28 3F 44 E1 E9 8B 06 6D 70 8B   // ....5.(?D....mp.
                 0F F5 7E 92 6C AB 3D 1B 0D 41 7E 34 E4 1A 45 E1 ) // ..~.l.=..A~4..E.
    
  3. 创建强名称密钥(如果没有):

    sn -k MyKeyPair.snk
  4. 重新汇编

    ilasm /dll /key=MyKeyPair.snk /output=YourAssembly_Signed.dll Assembly.il

Visual Studio 版本.NET 版本C# 版本主要新特性(C#)
VS 2022 (17.0+).NET 6-9C# 10-12记录结构、全局using、文件作用域命名空间、原始字符串字面量等
VS 2019 (16.0+).NET Core 3.x/.NET 5C# 8.0-9.0默认接口方法、异步流、索引和范围、模式匹配增强等
VS 2017 (15.0+).NET Core 1.x-2.xC# 7.0-7.3元组、模式匹配、本地函数、ref返回值等
VS 2015.NET 4.6C# 6.0空条件运算符、字符串插值、nameof表达式等
VS 2013.NET 4.5.1C# 5.0异步/await、调用者信息特性
VS 2012.NET 4.5C# 5.0异步/await(主要)
VS 2010.NET 4.0C# 4.0动态类型、命名参数、可选参数
VS 2008.NET 3.5C# 3.0LINQ、Lambda表达式、扩展方法
VS 2005.NET 2.0C# 2.0泛型、匿名方法、迭代器