强名称三个相互引用的程序集

4
这可能很简单,但我被卡住了(我是c#的新手)。我有三个相互引用的程序集(例如,注册委托方法的通知或调用公共方法),它们都可以编译通过,直到我尝试使用强名称进行签名。然后我就无法编译它们中的任何一个,因为其他两个没有强名称。我错过了什么?我已经为所有三个创建了强名称文件,但不能包含snk并编译它们。
2个回答

4
如果您已经创建了一个 snk 文件,想要在这三个项目中使用,可以选择: 在项目的上下文菜单中选择“添加现有项”。 浏览到 snk 文件,然后通过单击添加按钮旁边的箭头选择“添加为链接”。 然后,在项目属性中,确保在签名选项卡中选中“签署程序集”复选框,然后选择刚刚添加到项目中的密钥文件。 这样就可以解决问题了。

+1. 既然你似乎懂这些,我很好奇,使用相同的密钥是否有任何缺点? - Skurmedel
2
目前我不知道。 实际上,许多相关的Microsoft程序集具有相同的PublicKeyToken(您可以在全局程序集缓存中检查此内容),这表明它们也使用了相同的密钥文件进行签名。 - Anton
知道这点很好,如果你有5个程序集并且白白生成了5个密钥,那就有点繁琐了 :) - Skurmedel

2
一个强名称程序集只能引用其他强名称程序集。
引用强名称程序集时,您期望获得某些好处,例如版本控制和命名保护。如果强名称程序集然后引用具有简单名称的程序集,该程序集没有这些好处,则您将失去使用强名称程序集所获得的好处,并恢复到DLL冲突。因此,强名称程序集只能引用其他强名称程序集。
摘自MSDN

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