Until recently, during the design stage of every project, we analyzed the project requirements and then chose a language that best fit that project. With the introduction of .NET, things have changed a lot. .NET's interesting cross-language development system allows a module to be developed in one language and still integrate seamlessly with the rest of the modules in any other .NET language. For example, a Visual Basic programmer can develop a module in VB.NET and a C# programmer can consume, inherit, and debug it, as well as handle exceptions--and more.
It is the Microsoft Intermediate Language (MSIL), along with the Common Language Runtime (CLR), that gives the ability to truly integrate all .NET languages. This article introduces MSIL and gives some internals of the language. It also discusses how C# and VB.NET compilers generate their IL code.