Почему именно regasm предупреждает меня о подписи с использованием строгого имени?

Если я хочу сделать сборку .NET пригодной для использования в качестве COM-сервера, мне нужно добавить набор атрибутов, а затем использовать regasm для зарегистрируйте его как COM-сервер.

Если сборка не подписана строгим именем regasm при запуске с ключом / codebase , отображается предупреждение RA0000 что сборка может мешать работе других сборок на том же компьютере , и я должен подписать ее строгим именем, но регистрация прошла успешно и даже работает нормально.

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

Что толку подписывать строгим именем в случай сборок .NET, доступных для COM?

7
задан sharptooth 1 February 2011 в 16:05
поделиться