Strong Named Assemblies

Aug 30, 2011 at 2:10 PM

Currently the dependent assemblies DataValidationFramework.Net and EntityGraph.Net are not strong named. Because of this, I can't strong name EntityGraphShape4SQL.

 

At this point, this looks like an issue for us since all our production code assemblies have to be strong named.

 

Preferably, all dependent assemblies would be RELEASE version and strong named (using reflector it looks like they are both DEBUG builds right now).

Coordinator
Aug 30, 2011 at 3:36 PM

Hi,

Good points.

I can certainly make them as RELEASE versions.

Can you give me a little hint about how to make strong versions (sorry for my unconsciousness on this matter :-) )

Aug 30, 2011 at 4:27 PM
Edited Aug 30, 2011 at 4:31 PM

Assemblies can be strong named or not strong named.

http://msdn.microsoft.com/en-us/library/wd40t7ad.aspx

Basically, a strong named assembly has a unique identity and allows you to provide versioning support to all users of the library. This means that if assembly A references assembly B, it allows A to know exactly which version of B it needs and can detect any binary versioning issue (if that exact version does not exist). It also means, that a user of your library can use standard CLR support to deal with versioning changes between version 1.x.y.z and 1.u.t.w of assembly B, such as assembly redirects etc. It is also a requirement for installing an assembly in the GAC.

Easiest way to sign an assembly is to use the project properties page, and turn it on on the Sign tab. Note, the same strong name key file should preferably be used to sign all versions of the same assembly so it should be considered part of the source (and possibly a private piece such depending on the application).

For any third party class library, I'd say it would be strongly recommended to strong name it. Basically, without it all you can identify the assembly with is its name.

Coordinator
Aug 31, 2011 at 11:08 AM

Mathias,

I've just pushed new NuGet packages for EntityGraph (and DataValidationFramework) which use strong names and are compiled in RELEASE mode.

Could you verify if this meets your requirements?

Aug 31, 2011 at 5:43 PM

Yes. Just updated and both EntityGraph and DataValidationFramework are now strong named.

I can now compile EntityGraphShape4SQL with a strong name key I create myself, which is enough for us to be able to try it out with our code.

Thanks, good job.