We have a solution with many projects in it (probably 20 or more). Recently we've made some changes that require a couple of those assemblies to be callable from COM, which means we need to strong-name them. Those assemblies reference others in our project, which means they need to be strong-named as well. They also have InternalsVisibleTo attributes, so the assemblies that are granted that must also be strong-named.
Rather than hunt-and-peck trying to find just which assemblies need signing/strong-naming, I recommended we simply strong-name them all. This has put a couple of people in a tizzy about risk. I'm arguing that there is no risk, but they want pros and cons of signing assemblies. The only things I've been able to come up with are:
Pros
Cons
I have two specific questions:
You should strong name your open-source . NET libraries. Strong naming an assembly ensures the most people can use it, and strict assembly loading only affects . NET Framework.
What makes a strong-named assembly? A strong named assembly is generated by using the private key that corresponds to the public key distributed with the assembly, and the assembly itself. The assembly includes the assembly manifest, which contains the names and hashes of all the files that make up the assembly.
A strong name consists of the assembly's identity—its simple text name, version number, and culture information (if provided)—plus a public key and a digital signature. It is generated from an assembly file using the corresponding private key.
A strong name signature is an identity mechanism in the . NET Framework for identifying assemblies. It is a public-key digital signature that is typically used to verify the integrity of data being passed from an originator (signer) to a recipient (verifier).
Your single con is bogus. It's actually a pro.
Unsigned assemblies can be used exclusively by unsigned assemblies. Signed assemblies can be used by both signed assemblies and unsigned assemblies.
"It's a requirement to call the assembly from COM"
You dont need to sign an assembly to make it a COM Component. I implemented a lot of COM-server without signing the assembly.
some more Cons:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With