Assembly is a unit of deployment like dll or exe file. It consists of one or more files, represent group of resources, type definition and implementation of types. It may also contain references to other assemble. An assembly is a self-describing. It is called manifest.
Manifest contain meta data information needed to do the following things.
1. Version of the assembly
2. Scope of the assembly
3. Security identity
4. Resolve references to resources and classes
An assembly contain meta information which is used by CLR from type checking to actually invoking methods. As it is a self-describing which is independent of registry. There are three type of assembly. They are,
1. Private assembly
2. Public or shared assembly
3. Satellite assembly
Private assembly: is used by a single application. It is stored in the application directory or sub-directory beneath. If we want to remove it we can simply delete it from the hard drive.
Shared assembly: is normally stored in GAC(Global Assembly Cache). So that they are globally accessble to all .Net applications. They are normally libraries of code which many applications will find useful. eg. Crystal report classes which will be used by all applications for reports.
Satellite assembly: In multilingual application in .Net to support multilingual functionality we can have modules which are customized for localization. These assemblies are called satellite assemblies. We can distribute these assemblies separately than core modules.