Se voglio rendere un assembly .NET utilizzabile come server COM, devo aggiungere una serie di attributi e quindi usare regasm
per registrarlo come server COM.Perché esattamente il regramma mi avvisa della firma con un nome forte?
Se il gruppo non è firmato con un nome regasm
quando eseguito con /codebase
chiave mostra un RA0000
avviso dicendo che l'assemblea potrebbe interferire con altre assemblee sullo stesso computer e dovrei firmare con un nome sicuro, ma la registrazione ha successo e funziona anche bene.
I nomi sicuri AFAIK hanno lo scopo di impedire il cosiddetto inferno DLL. Ma COM aveva anche lo scopo di prevenire l'inferno della DLL. Se cambio qualsiasi interfaccia esposta a COM I deve modificare il GUID o almeno mantenere la compatibilità binaria. Quindi firmare con un nome forte non sembra aggiungere nulla di utile - nulla mi impedisce di rompere le interfacce COM, quindi firmare con la stessa coppia di chiavi e avere un inferno in piena regola.
A cosa serve firmare con un nome valido in caso di assembly .NET con esposizione COM?