使用强名称为程序集签名

可通过许多方法为程序集签署强名称:

  •  这是为程序集签署强名称的最简单且最方便的方法。

  • 通过使用程序集链接器 (Al.exe) 将 .NET Framework 代码模块(.netmodule 文件)与密钥文件链接。

  •  你可以使用 AssemblyKeyFileAttribute 或 AssemblyKeyNameAttribute 特性,具体取决于要使用的密钥文件所在的位置。

  • 通过使用编译器选项。

一、使用 Visual Studio 创建程序集并为程序集签署强名称

 

  1. 在“解决方案资源管理器”中,打开项目的快捷菜单,然后选择“属性”。
  2. 选择“签名”选项卡。
  3. 选择“为程序集签名”框。
  4. “选择强名称密钥文件”框中,选择“<浏览…>”,然后导航到该密钥文件。 若要创建新的密钥文件,请选择“<新建…>”,然后在“创建强名称密钥”对话框中输入其名称。

 

二、使用程序集链接器创建程序集并为程序集签署强名称

  • 在 Visual Studio 命令提示符处,键入以下命令:

    al /out:<assemblyName<moduleName> /keyfile:<keyfileName>

    其中:

    assemblyName

    程序集链接器将发出的强签名的程序集的名称(.dll 或 .exe 文件)。

    moduleName

     可以通过在 C# 或 Visual Basic 中使用/target:module 开关编译代码来创建 .netmodule 文件。

    keyfileName

     程序集链接器解释与当前目录相关的相对路径。

sgKey.snk 签署强名称。

                   al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk

三、使用特性为程序集签署强名称

  1. 将 System.Reflection.AssemblyKeyFileAttribute 或 AssemblyKeyNameAttribute 特性添加到源代码文件中,并指定包含为程序集签署强名称时要使用的密钥对的文件或容器的名称。

        2. 通常会编译源代码文件。

  [assembly:AssemblyKeyFileAttribute("keyfile.snk")]

使用编译器为程序集签署强名称

  •  使用命令行编译器时,你可以将密钥文件复制到包含源代码文件的目录中。

    有关延迟签名的信息,请参阅 延迟为程序集签名。

    sgKey.snk 签署强名称。

          csc /t:library UtilityLibrary.cs /keyfile:sgKey.snk