· Location and visibility: A private assembly is normally used by a single application, and is stored in the application’s directory, or a subdirectory beneath. A shared assembly is normally stored in the global assembly cache, which is a repository of assemblies maintained by the
.NET runtime. Shared assemblies are usually libraries of code which many applications will find useful, e.g. the .NET framework classes. · Versioning: The runtime enforces versioning constraints only on shared assemblies, not on private assemblies.