Jeśli chcę uczynić zestaw .NET użytecznym jako serwer COM, muszę dodać zestaw atrybutów, a następnie użyć regasm
, aby zarejestrować go jako serwer COM.Dlaczego dokładnie regasm ostrzega mnie przed podpisaniem pod silną nazwą?
Jeżeli zespół nie jest podpisany z silną nazwą regasm
Uruchomiony z /codebase
klucza pokazuje RA0000
ostrzeżenie mówiące, że zespół mogłyby kolidować z innymi zespołami na tym samym komputerze i muszę podpisać z silną nazwę, ale Rejestracja się udaje, a nawet działa dobrze.
Silne nazwy AFAIK mają na celu zapobieganie tak zwanemu piekłu w bibliotece DLL. Ale COM miał także zapobiegać piekłu w bibliotece DLL. Jeśli zmienię interfejs narażony na COM, muszę zmienić GUID lub przynajmniej zachować zgodność binarną. Dlatego podpisywanie się silną nazwą nie wydaje się być przydatne - nic nie przeszkadza mi w łamaniu interfejsów COM, a następnie podpisywaniu za pomocą tego samego klucza i posiadania pełnego piekła DLL.
Jaki jest pożytek z podpisu pod silną nazwą w przypadku złożonych zestawów .NET COM?