如果我想让 .NET 程序集可用作 COM 服务器,我必须添加一组属性,然后使用regasm
它来将其注册为 COM 服务器。
如果程序集regasm
在使用密钥运行时未使用强名称签名,则会/codebase
显示RA0000
警告,指出该程序集可能会干扰同一台计算机上的其他程序集,我应该使用强名称对其进行签名,但注册成功,它甚至可以正常工作。
AFAIK 强名称旨在防止所谓的 DLL 地狱。但 COM 也旨在防止 DLL 地狱。如果我更改任何暴露给 COM 的接口,我必须要么更改 GUID,要么至少保持二进制兼容性。所以用强名称签名似乎并没有增加任何有用的东西——没有什么能阻止我破坏 COM 接口,然后用相同的密钥对签名并拥有成熟的 DLL 地狱。
在 COM 公开的 .NET 程序集的情况下,使用强名称签名有什么用?