Back to results for “.NET vs .NET Framework”
.NET › Assemblies & NuGet

What is strong naming of assemblies, and why is it much less commonly required in modern .NET?

Intermediate

Answer

Strong naming signs an assembly with a public/private key pair, giving it a unique identity (name, version, culture, public key token) primarily used historically for GAC installation and preventing assembly substitution/tampering in .NET Framework. Modern .NET's side-by-side, per-application deployment model and absence of a GAC removes most of the original motivations for strong naming, though it's still occasionally required for specific interop scenarios or organizational policy.
<PropertyGroup>
  <SignAssembly>true</SignAssembly>
  <AssemblyOriginatorKeyFile>MyKey.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
Real-world example A library targeting both legacy Framework consumers (who still expect strong-named assemblies for GAC compatibility) and modern .NET consumers maintains strong naming primarily for backward compatibility rather than any modern security need.

Common follow-ups: Does strong naming provide real security guarantees on its own?;When would a modern .NET project still need strong naming?