Satellite assemblies and strong names

I recently had to investigate how to create satellite resource assemblies for assemblies that are strongly named. Some of the information was surprisingly poorly documented, and required some experimentation to figure out, so I'm posting the results in the hope it might save other people some time.

Here's what I learned:
  • Satellite assemblies for strong named assemblies must be strong named.

    OK, not that surprising.

  • Satellite assemblies for strong named assemblies must be signed with the same key as the main assembly.

    This is actually a bit of a pain for my company, because we use localization partners that in the past have been able to localize the product pretty much independently from us. With our .NET code, we'll have to sign the final satellite assemblies. Fortunately, the localizers can use  delay signing with skip verification to do all of their development and testing, and we just need to do the final signing.

  • By default, satellite assemblies must have the same version number as the main assembly. You can use the SatelliteContractVersionAttribute to enable the main assembly to be versioned while still maintainng compatibility with existing satellite assemblies (thanks to Joe for pointing out this atttribute).

2 Comments

Comments have been disabled for this content.