我有一个包含多个C#类库的解决方案。最近我在做一些研究,建议对我的库输出的程序集进行签名,使它们具有强名称。首先,我想知道是否应该继续这样做?从这些类库输出的库被用于多个其他项目。
如果根据我的前一个问题建议是要签名我的dll,那么我使用的.snk文件,可以用于解决方案中的每个类库吗?还是必须每个类库都有一个密钥?
如果根据我的前一个问题建议是要签名我的dll,那么我使用的.snk文件,可以用于解决方案中的每个类库吗?还是必须每个类库都有一个密钥?
如果您打算将程序集放入GAC以供大量程序集使用,则这是必要的。
如果您要将其提供给用户以供使用而不是自己安装,那么这是有利的,因为它提供了一定程度的保证,即它确实是您所说的文件,而不是被篡改的文件。
最好每个实体(个人、集体、开源组织或公司)只使用少量(可能只有一个)SNK文件,因为如果有人信任您(无论“您”是指个人、公司等),因此他们相信公钥确实是您的,那么他们下次也会信任它。您不想每次都用不同的手写签名签署支票,对吧?
签名DLL是将DLL发布到GAC所必需的要求。 DLL签名的真正好处如下。
1. 版本控制
2. 鉴别认证
a. 版本控制表示dll构建的版本。在将它们推送到GAC时,可以存在两个具有相同名称但不同版本的dll。
b. 鉴别认证表示未篡改的dll是否与创建时相同。
有关dll签名的详细博客,请单击此处。