How to Microsoft .Net Framework

The source code written in various Microsoft .Net languages undergoes a compilation process that transforms it into Microsoft Intermediate Language (MSIL). MSIL, often referred to as Intermediate Language (IL) or Common Intermediate Language (CIL), represents a set of instructions that are not tied to any specific CPU architecture. This intrinsic characteristic of MSIL enables it to be easily converted into native code, which can be executed on a particular CPU platform.

During the compilation process, metadata is also generated alongside the Microsoft Intermediate Language (MSIL) code. This metadata serves as a comprehensive self-describing repository of information related to the compiled code. It contains vital details such as the members, types, references, and other pertinent data required by the Common Language Runtime (CLR) for the execution of the program.


To store this metadata, a file known as the Manifest is created. The Manifest serves as a centralized container, encapsulating all the necessary information that the CLR relies on to effectively execute the compiled code. By consolidating the metadata within the Manifest, the CLR gains access to a wealth of critical information that facilitates the seamless execution of the .Net application.

The metadata stored within the Manifest offers a wealth of benefits. Firstly, it provides a clear and concise representation of the program's structure, making it easy to navigate and understand. Additionally, the metadata streamlines the execution process by eliminating the need for manual configuration or intervention. The CLR can autonomously retrieve and interpret the metadata, ensuring the smooth execution of the .Net application.


The Common Language Runtime (CLR) plays a vital role in executing managed code within the .Net Framework. To accomplish this, the CLR relies on metadata, which serves multiple purposes including locating and loading classes, generating native code, providing security, and facilitating the execution of managed code.

When both Microsoft Intermediate Language (MSIL) and metadata are combined, they form what is known as a Portable Executable (PE) file. The PE file format is designed to be portable across all 32-bit operating systems supported by the Microsoft .Net Framework. This ensures that the compiled code can run seamlessly on various operating systems without requiring any additional modifications.

Just-In-Time (JIT) compiler

During runtime, the CLR utilizes a mechanism called the Just-In-Time (JIT) compiler to convert the MSIL code into native code that can be directly executed by the operating system. This native code is independent of the underlying operating system, making it portable and compatible across different environments. This code is referred to as managed code, indicating that the functionality and behavior of the code are managed and controlled by the .NET Framework.

The Common Language Runtime (CLR) provides multiple JIT compilers, each targeting a specific architecture and operating system combination. This means that the same MSIL code can be executed on different operating systems by utilizing the appropriate JIT compiler. This flexibility allows developers to write code in a platform-agnostic manner, knowing that the CLR will handle the necessary optimizations and transformations to ensure efficient execution on the target system.

Can I run .Net Framework on Linux ?

The Microsoft .Net Framework is indeed proprietary software developed by Microsoft primarily for Windows operating systems. It is designed to utilize the Windows API (Application Programming Interface) for its execution and relies on the Windows operating system to provide the necessary runtime environment. As a result, the .Net Framework cannot run natively on Linux or other non-Windows platforms.

However, in response to the growing demand for .Net functionality on alternative operating systems, an open-source implementation of the .Net Framework called Mono was developed. Mono aims to replicate the core functionality of the Microsoft .Net Framework and provides a compatible runtime environment that allows .Net applications to run on non-Windows platforms, including Linux.

Mono Project

Mono offers similar functionality to the Microsoft .Net Framework, including support for multiple programming languages such as C# and Visual Basic .Net, as well as the ability to execute managed code. It provides its own runtime environment, known as the Mono Runtime, which allows developers to run .Net applications on Linux and other supported platforms.

While Mono strives to be compatible with the Microsoft .Net Framework, it's worth noting that there may be some differences in behavior or specific features due to the inherent challenges of replicating a proprietary software framework. Nonetheless, Mono has made significant strides in achieving compatibility and offers a viable solution for developing and running .Net applications on non-Windows platforms. More about : MONO


The compilation process of Microsoft .Net languages involves the transformation of source code into Microsoft Intermediate Language (MSIL). Alongside the MSIL code, metadata is generated, capturing crucial details about the program. This metadata is stored within a file called the Manifest, serving as a self-describing repository that provides the Common Language Runtime (CLR) with the necessary information for seamless execution. By using the power of metadata, the CLR eliminates manual intervention, streamlines the execution process, and enhances the overall performance of .Net applications.