要构建共享程序集,是否需要签名开销?

时间:2012-04-11 12:13:23

标签: c#

  

可能重复:
  Shared Assembly - Is Signing Required?

如果我想构建一个共享程序集,那是否需要签署和管理密钥对的开销?

4 个答案:

答案 0 :(得分:1)

如果要将程序集部署到Global Assembly Cache

,则需要对程序集进行签名
  

部署在全局程序集缓存中的程序集必须具有强名称。

在其他部署方案中,不需要强名称(这意味着签名),但鼓励使用。

答案 1 :(得分:0)

首先,构建共享程序集确实涉及使用加密密钥。在构建程序集时,只需要公钥。面向.NET Framework的编译器提供命令行选项(或使用自定义属性),以便在构建程序集时提供公钥。通常在源数据库中保留公共公钥的副本,并将构建脚本指向此密钥。装运前,装配必须使用相应的私钥完全签名。这是使用名为SN.exe(强名称)的SDK工具完成的。

强名称签名不涉及Authenticode等证书。没有涉及第三方组织,没有支付费用,也没有证书链。此外,验证强名称的开销远低于Authenticode。但是,强名称不会发表关于信任特定发布者的任何陈述。强名称允许您确保给定程序集的内容未被篡改,并且代表您在运行时加载的程序集来自与您开发的程序集相同的发布者。但它没有说明你是否可以信任该出版商的身份。

希望这有帮助。

答案 2 :(得分:0)

其实没有。 .NET不会强制您对程序集进行签名。此外,.NET中的所有程序集都是共享的。您无法像使用C ++或任何其他本机语言一样构建静态库。

您需要签署程序集的唯一情况是需要在Globall Assembly Cache中部署它时。

答案 3 :(得分:0)

不,不是必需的。
当使用例如唱歌时,签名可用于增加信任。当您使用强名称签署程序集时,可以使用有效的证书或防止程序集被更改 只有GAC中的程序集必须是signend。