An Assembly is the smallest unit of deployment of a .net application. It can be a dll or an exe. It has mainly three types as follows,
1. Private Assembly
2. Public / Shared Assembly
3. Satellite Assembly
1. Private Assembly - A private assembly can be used by only a single application and not accessible for other applications. The dll or exe is generally stored in the application root folder.
2. Public / Shared Assembly - Public / Shared Assemblies are the assemblies that are accessible globally/shared across the machine to all the applications which are stored inside Global Assembly Cache (GAC), these can generally be found in the operating system folder like follows C:WindowsAssembly. For using the shared assemblies you need to register the assembly with a strong name in the GAC using gacutil.exe.
most common assemblies contained in the Global Assembly Cache,
3. Satellite Assembly - satellite assemblies are useful while creating multilingual applications. Using satellite assemblies, localizable resources can be placed for different languages in different assemblies.