By definition of assemblies in .NET we can say it’s a logical unit that contains compiled code targeted at .NET. An assembly is completely self-describing and it is logical rather than a physical unit which means that it can be stored across more than one file.
An important feature of assembly that they contain the metadata that hold the information of the type and method defines in the corresponding code. This assembly metadata contained in area known as manifest that allows checking to be made on the version of the assembly and the integrity.
In this section we will briefly discuss about two main assemblies
1) Private Assembly
2) Shared assembly
Apart from the above two assembly satellite assembly is also there
Private assemblies are the simplest type. As a private assemblies used by the application that they are made for which means you have more control over what application use them. private assembly is entirely self contained ,the process of deploying of private assembly is very simple just you need to place the appropriate file in the appropriate folder.
Shared assemblies are the common libraries that any other application can use of it. Because any other application can access a shared assemblies. Shared assemblies are store in a special directory in the file system called Global Assembly Cache (GAC). This can not be done by just copy-paste the assibilates in that folder it need to be specially installed into the cache by .NET utilities called Gacutil.