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.