如果我想将一个.NET程序集用作COM服务器,我需要添加一组属性,然后使用
如果该程序集没有使用强名称签名,在使用
据我所知,强名称旨在防止所谓的DLL地狱。但是,COM也旨在防止DLL地狱。如果我更改向COM公开的任何接口,则必须更改GUID或至少保持二进制兼容性。因此,使用强名称签名似乎没有添加任何有用的内容-没有任何东西可以防止我破坏COM接口,然后使用相同的密钥对进行签名并拥有完整的DLL地狱。
在.NET程序集暴露给COM时,强名称签名有什么用处呢?
regasm
将其注册为COM服务器。如果该程序集没有使用强名称签名,在使用
/codebase
键运行regasm
时,会显示一个RA0000
警告,指出该程序集“可能会干扰同一台计算机上的其他程序集”,并建议我对其进行强名称签名,但是注册仍然成功,并且它甚至可以正常工作。据我所知,强名称旨在防止所谓的DLL地狱。但是,COM也旨在防止DLL地狱。如果我更改向COM公开的任何接口,则必须更改GUID或至少保持二进制兼容性。因此,使用强名称签名似乎没有添加任何有用的内容-没有任何东西可以防止我破坏COM接口,然后使用相同的密钥对进行签名并拥有完整的DLL地狱。
在.NET程序集暴露给COM时,强名称签名有什么用处呢?