In this blog I’m explaining Assembly in .NET.
An assembly is a fundamental unit of any .NET application. Assembly is really a collection of types and resource information that are built to work together and form a logical unit of functionality. An Assembly is a logical unit of code, it contains code that the Common Language Runtime (CLR) executes. Under the compilation time Metadata inn created, with the Microsoft Intermediate Language (MSIL), and stored in file called Manifest. Portable Executable (PE) file is the combination of Metadata and Microsoft Intermediate Language (MSIL). Manifest file contains the information about and this information is called Assembly Manifest, it contains information about the members, types, references and all the other data that the runtime needs for execution.
Every Assembly you create contains one or more program files and a Manifest. There are two types program files: Process Assemblies (EXE) and Library Assemblies (DLL). Each Assembly can have only one entry point (that is, DllMain, WinMain, or Main).
There are two kind of Assembly in .NET:
1. Private Assembly
2. Shared Assembly
The assembly which is used by a single application is called as private assembly. It is stored in that application's install directory. Private assemblies are simple and copied with each calling assemblies in the calling assemblies folder.
Shared assembly (public assembly) also a collection of types and resources like private assembly. A shared assembly is one that is used by multiple applications on the machine. Shared assemblies (also called strong named assemblies) are copied to a single location (usually the Global assembly cache (GAC)). A shared assembly must have a name that is globally unique. The .NET Framework supports these naming requirements through a technique called strong names.