使用强名称签名DLL的好处

8
我有一个包含多个C#类库的解决方案。最近我在做一些研究,建议对我的库输出的程序集进行签名,使它们具有强名称。首先,我想知道是否应该继续这样做?从这些类库输出的库被用于多个其他项目。
如果根据我的前一个问题建议是要签名我的dll,那么我使用的.snk文件,可以用于解决方案中的每个类库吗?还是必须每个类库都有一个密钥?

1
关于您的第一个问题,请参见https://dev59.com/nXM_5IYBdhLWcg3w2XLw和https://dev59.com/DnRB5IYBdhLWcg3wF0HH。 - Otiel
3个回答

3
有时签名程序集是必需的。如果您希望将程序集GAC,或者已签名的程序集想要引用另一个程序集,则需要签名。
您可以重复使用同一.snk文件,这样做将导致所有程序集具有相同的公钥令牌。

1

如果您打算将程序集放入GAC以供大量程序集使用,则这是必要的。

如果您要将其提供给用户以供使用而不是自己安装,那么这是有利的,因为它提供了一定程度的保证,即它确实是您所说的文件,而不是被篡改的文件。

最好每个实体(个人、集体、开源组织或公司)只使用少量(可能只有一个)SNK文件,因为如果有人信任您(无论“您”是指个人、公司等),因此他们相信公钥确实是您的,那么他们下次也会信任它。您不想每次都用不同的手写签名签署支票,对吧?


0

签名DLL是将DLL发布到GAC所必需的要求。 DLL签名的真正好处如下。

1. 版本控制

2. 鉴别认证

a. 版本控制表示dll构建的版本。在将它们推送到GAC时,可以存在两个具有相同名称但不同版本的dll。

b. 鉴别认证表示未篡改的dll是否与创建时相同

有关dll签名的详细博客,请单击此处


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接