是否应签署互操作程序集?

sha*_*oth 8 .net strongname digital-signature

我们有一组用VC++开发的COM组件.将此类组件的引用添加到.NET项目时,Visual Studio将生成一个互操作程序集.我们现在有一套这样的组件.

在运行我们的每日构建时,我们使用数字签名签署所有生成的二进制文件.Interop程序集未签名,因为我们认为我们不是作者 - 任何人都可以使用Visual Studio并生成相同的程序集.

我们也应该签署互操作程序集吗?我们是否应该使用强名称(sn.exe实用程序)对其进行签名?这样做的原因是什么?

Pau*_*der 8

一段时间以来,这一直是一个棘手的平衡.问题来自于您需要使用代码分发Interop程序集,并且您可能正在签署自己的程序集.如果您对程序集进行签名,则它所引用的所有程序集也必须进行签名 - 包括Interop程序集.所以你必须签名.

如果您要分发一个独立的应用程序,那么就没有风险,您应该继续签署程序集以使您的生活更轻松.

如果您正在分发组件库,那么事情可能会有点棘手,因为使用您的库的其他开发人员可能会生成自己的互操作程序集,但使用自己的密钥对其进行签名.这会导致各种命名和依赖性问题.

根据Interop程序集的复杂程度 - 您可以将代理代码生成到单独的.CS/.VB文件中,并将其直接编译到程序集中.那么您就不必担心强名称问题了.