.NET: Assembly and its Types

Assembly is unit of deployment like EXE or a DLL. It is completely self-describing and is  is a reusable, versionable, self-describing deployment unit for types and resources it is the primary building block of a .NET application. Assemblies provide the infrastructure to allow the runtime to fully understand the contents of an application and to enforce the versioning and dependency rules defined by the application.

In .Net 3 types of Assemblies are available:

1. Private Assemblies : Private Assemblies are designed to be used by one application and 
                                   must reside in that application's directory or subdirectory.


2. Shared Assemblies
Microsoft offers the shared assembly for those components that must 
                                  be distributed. It centered around two principles. 
                                  Firstly, called side-by-side execution, allows the CLR to house multiple 
                                  versions of the same component on a single machine.
                                  Secondly, termed binding, ensures that clients obtain the version of the 
                                  component they expect.

3. Satellite Assembly: A satellite Assembly is defined as an assembly with resources only, no 
                                 executable code.