How many types of assemblies are there?
Private, Public/Shared, Satellite. A private assembly is normally used by a one application, and is stored in the application's directory. A shared assembly is normally stored in the global assembly cache, which is a repository of assemblies maintained by the .NET runtime. Satellite assemblies are often used to deploy language-specific resources for an application. These language-specific assemblies work in side-by-side execution because the application has a separate product ID for every language and installs satellite assemblies in a language-specific subdirectory for every language.