【问题标题】:benefit of signing dll with strong name使用强名称签署 dll 的好处
【发布时间】:2012-01-13 14:10:12
【问题描述】:
我有一个包含多个 c# 类库的 c# 解决方案。我最近正在做一些研究,建议对我的库中输出的程序集进行签名,使它们使用强名称进行签名。首先,我想知道我是否最好这样做?从这些类库输出的库用于多个其他项目。
如果从我之前的问题中得到建议,是的,我应该签署我的 dll,即我使用的 .snk,这可以用于解决方案中的每个类库吗?还是必须是每个类库一个键?
【问题讨论】:
标签:
c#
assemblies
.net-assembly
strongname
assembly-signing
【解决方案1】:
有时签署程序集是一项要求。如果您希望 GAC 您的程序集,或者如果已签名的程序集想要引用另一个程序集,则这是正确的。
您可以重复使用相同的.snk 文件,这样做会为所有程序集生成相同的公钥令牌。
【解决方案2】:
如果您打算将程序集放入 GAC 以供大量程序集使用,这一点很重要。
如果您打算将其提供给用户使用而不是自己安装,这将是有利的,因为它提供了一定程度的保证,即它确实是您所说的提供给他们的文件,而不是被篡改过的文件。
最好为每个实体(个人、集体、开源团体或公司)使用少量(可能只有一个)SNK 文件,因为如果有人信任您(“您”是指个人、公司等)并且他们因此相信他们确定是你的公钥,那么他们下次也会信任它。您不想每次都用不同的手写签名签署支票,对吗?
【解决方案3】:
签署 dll 是在 GAC 中发布 dll 的要求。 dll 签名的真正好处如下。
1.版本控制
2。身份验证
一个。版本控制表示构建 dll 的版本,在将它们推送到 GAC 时,可以存在两个同名但版本不同的 dll
b.身份验证表示dll是否未被篡改,并且在创建时是否存在。
有关 dll 签名的详细博客可在 here