When we compile our program, then it will not directly convert to native code instead of that it will convert to CIL (Common Immediate Language) or .dll file which is called as Assemble file. It is the collection of both .exe and .dll file.
In other word, it is the collection of types and resource information which work together and form a logical unit of functionality.
Most of the assembly is having four parts.
Manifest: It is a file which contains Meta data.
Metadata: It is in binary format that describe the characteristics of code. Metadata is machine-readable information. When a compiler compiles the program, it produces the CLR along with the Metadata. Both are contained in the PE file. Metadata is machine-readable information
Common Intermediate Language (CIL Code):
It is an intermediate language between the source code and machine code. During the compile time, the compiler converts the source code into Microsoft Intermediate Language, .exe and .dll file is built then the code is sent to the CLR (JIT compiler) which convert the it to the native code
Resource: This part contain, image file , media file,
There are three types of assembly
Private Assembly: When an assembly is used by single application it is called as private assembly.
Shared Assembly: When an assembly can be shared between two or more applications, then it is called as shared assembly.
Satellite Assembly: Assembly which contains any object like images or other non-executable files is called as satellite assembly.