Every project on compilation will produce a file known as Assembly, which is having the same name as our folder. They form a unit of deployment and are a collection of types and resources that are built to work together to form a logical unit of functionality.
They reside under BINDebugfolder. There are basically two type of assemblies: .dll and .exe.
.exe are capable of executing on their own and can provide service to other files to run. While .dll are not capable on executing on their own i.e. not loaded into clients memory. They only provide support to other under whom they run.
Assemblies are of two types:
(i) Private Assemblies (ii) Shared Assemblies
(i) Private Assemblies: To consume an assembly in a project first we have to make a reference of that assembly. In this process a copy of that assembly is created and given to the project. Each project will maintain a private copy of that assembly in it. But it is having a disadvantage that number of copies are maintained under different project.
(ii) Shared Assemblies: Shared assemblies are assemblies which are centralized in a location under GAC from where it is consumed by various projects. To consume such assemblies we have to add the reference of that assembly into multiple projects.