Если я хочу сделать сборку .NET пригодной для использования в качестве COM-сервера, мне нужно добавить набор атрибутов, а затем использовать regasm
для зарегистрируйте его как COM-сервер.
Если сборка не подписана строгим именем regasm
при запуске с ключом / codebase
, отображается предупреждение RA0000
что сборка может мешать работе других сборок на том же компьютере , и я должен подписать ее строгим именем, но регистрация прошла успешно и даже работает нормально.
Строгие имена AFAIK предназначены для предотвращения так называемого «ада DLL». Но COM также был предназначен для предотвращения ада DLL. Если я изменяю какой-либо интерфейс, доступный для COM, я должен либо изменить GUID, либо хотя бы поддерживать двоичную совместимость. Так что подписание строгим именем, похоже, не добавляет ничего полезного - ничто не мешает мне сломать COM-интерфейсы, затем подписать с той же парой ключей и получить полноценный ад DLL.
Что толку подписывать строгим именем в случай сборок .NET, доступных для COM?