An application may use any number of assemblies, some of which may come with the runtime, some of which may be optional runtime components, and others might be written by third-party developers.It first searches the location of the executing assembly.When an application is launched, Mono extracts the name of the assembly, the version and its public key token and loads the required assembly from the GAC.Strongnames can be difficult to understand because they serve a dual purpose: manageability and security.The GAC is a black boxed repository of assemblies capable of keeping multiple version/cultures of a same assembly.

the GAC requires all it’s assemblies to be strongnamed and signed).

In fact assemblies in the GAC aren’t verified when loaded from the runtime.

Hopefully these definitions can help everyone understand the difference between the two.

A binary blob inside an assembly that can be verified as the digital signature of the assembly (i.e.

Because the the public key (inside the assembly) is part of the signature it is not possible to modify the assembly contents without detection (providing integrity).