Whenever project is compiled.It generates an output file that contains IL code then the output file is called as assembly. All classes under it . The name of the Assembly will be same as project name.An application development is done what we install on client machines is assemblies only. An assembly file can have an extension of either .exe(Executable file) or .DLL (Dynamic Link Library).
There are two types of Assemblies. Those are the
1. Private Assemblies
2. Shared Assemblies
By default every Assembly is private, If we add the reference of a private assemblies to any project, a copy of the assembly is created and given to the project. So each project maintains a private copy of the assembly.
The Advantages of a private assembly is faster in execution as it was in local folder of the project consuming the assembly, where as dis-advantage is multiple copies gets created when multiple projects add the reference to consume it.
Shared Assemblies :-
An assembly that resides in a centralized location known as GAC(Global Assembly Cache) and provides resources to any number of projects that wants to consume is known as a shared Assemblies. If an assembly is shared multiple copies will not be created even if being consumed by multiple projects, only single copy under GAC serves all the project. GAC is folder that is present under the windows Folder.