Assemblies are the building blocks used by the .NET
Framework to solve the versioning and deployment issues just described.
Assemblies are the deployment unit for types and resources. In many ways an
assembly equates to a DLL in today's world; in essence, assemblies are a
"logical DLLs."
Versioning in .NET is done at the assembly level—nothing
smaller, like a module or a type, is versioned. Also, assemblies are used to
share code between applications
Please refer to MSDN
for more details on Assemblies and Assemblies Manifest.