Assemblies serve many roles, including the following:
They serve as a typical unit for the deployment of code, associated metadata, and embedded resources.
They act as a means to stimulate code reuse by building libraries that can be reused from different components or applications.
They provide for a versioning story, resolving core issues that existed before in the world of COM with the “DLL hell.”
Scoping and visibility ...