The fact that this diversity of languages can coexist within .NET is one of the platform’s strengths. Because the code all gets compiled to CIL bytecode, it doesn’t matter which language you use to write your applications. You are free to decide based on your preferences, the strengths and weaknesses of each language, or the different aspects of .NET you can access based on the language you use (these vary). While most of .NET’s base class library was written in C#, you can access those classes from code written in other CLI languages. Components written in different CLI languages can freely interoperate across a .NET application.
.NET history
So far, I’ve used “.NET” as a generic term to refer to the platform, but the .NET ecosystem is actually a bit more complex. Because .NET is an open standard, anyone could potentially implement their own version of it. For much of the platform’s history, Microsoft’s version was called the .NET Framework. Another famous implementation was Mono, released in 2001. Mono was an open source implementation for running .NET applications on Linux, and was controversial at the time due to bad blood between Microsoft and the open source community. Later, Mono formed the basis of the Xamarin platform, which made it possible to build .NET applications for iOS, Android, and macOS as well as Linux. Xamarin began life as the brainchild of Mono’s founders, but the company they founded to support the project was ultimately acquired by Microsoft.
By 2014, Microsoft and the developer community were looking to consolidate their efforts into a .NET implementation rebuilt from the ground up. The result was what was originally called .NET Core, a cross-platform implementation of the .NET standard that shed some of the cruft that had accumulated over the years and was released as open source in 2016. Initially, it lacked the full range of features available in the .NET Framework, and so the .NET Framework, .NET Core, and Xamarin all coexisted, which understandably caused some confusion. In 2017, InfoWorld columnist Simon Bisson grappled with the question of which implementation should be used in which contexts.