强名/签名程序集的优缺点

Cra*_* W. 8 .net assembly-signing

我们有一个包含许多项目的解决方案(可能是20个或更多).最近我们做了一些更改,需要从COM调用几个这些程序集,这意味着我们需要对它们进行强名称.这些程序集引用了我们项目中的其他程序集,这意味着它们也需要具有强名称.它们还具有InternalsVisibleTo属性,因此授予的程序集也必须具有强名称.

我建议我们简单地将它们全部命名,而不是试图找到哪些组件需要签名/强命名.这让几个人对风险感到不安.我认为没有风险,但他们想要签署集会的利弊.我能想到的唯一的事情是:

优点

  • 需要从COM调用程序集
  • 它允许我们将程序集放在GAC中(我们现在不这样做)
  • 它可以防止篡改(我们托管应用程序,它没有安装在客户端站点上,因此不是那么大的问题)

缺点

  • 它要求我们将来使用的每个组件都要签名

我有两个具体问题:

  1. 你会说,一般来说,签署/强名集会是个好主意吗?
  2. 你能想到其他任何利弊吗?

R. *_*des 5

你的单身骗局是假的.它实际上是专业人士.

无符号程序集只能由未签名的程序集使用.签名组件时可以采用两种签名的程序集和未签名组件.

  • 我碰巧认为它也是专业人士,但客观地说,它确实意味着我们从现在拥有的任何软件(商业,开源,共享软件,无论如何)必须提供签名版本_或_我们必须能够使用我们自己的snk构建一个签名版本.我认为从可以被视为骗局的业务角度来看. (5认同)

Dav*_*emp 3

  • ClickOnce 要求您的程序集经过签名
  • 许多开源项目不分发签名的程序集,并且使用您自己的 SNK 进行编译通常并不简单