When a .NET application is compiled it is converted from the language it was written in (VB.NET, C#, J# etc) to a Managed Module.
Managed Module is a low level set of instructions understood by Common Language Runtime.
This Managed Module contain MSIL which is direct compiled form of your code and metadata.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkud1s9viRARj9mO87NkDQU_b4Nl5BkXMUgLpjSNkBlqV6dd9RMBtRZsIYBVEwbELHdGywvWxfbV_X4GclQ5v4u1I87hXXW4fiEFC87YtSS6lwJBBuE0jP6we3_pKeRZ9VnCAOtPHi3Zok/s400/compiling+source.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7XpBWgrXbT9E9NTTnqZ9iSHfUBHTVhEPRvurZ5uW5QMtUQ9AxR9o82QRGyss8IkaIqqmgSLuYfUSWzp3VJhvcgXs3IeCKDUjEgpfjMQHbV_1MKa3z9cHbsQaS6dWWqnxow0FIhgZPaQj9/s400/structure.png)
Metadata
Every managed module contains metadata that describe the two things:
1. The types (classes) and members defined in your source code.
2. The types (classes) and members referenced by your source code.
Metadata is always associated with the file that contain the IL code.