I'll try to give a very probably incorrect answer with relevance to Linux.
NET includes the common language runtime which can take code from any of the NET languages (C#, F# and VB or any language which compiles to IL) and run it in a managed environment like the JVM.
In addition it has a huge (and I'm my opinion brilliant) standard library.
Since Microsoft started NET Core (which is fully open source) it has been possible to build and run NET on multiple platforms. As of the latest version (3) they also ported WPF and Winforms to NET Core but crucially these parts will not run outside of Windows. Full Windows only Framework as opposed to Core has continued to exist on its own release schedule in order to support all the legacy Windows only stuff. The latest plan seems to be to unite Core and Framework in the next version with cross platform for non desktop parts preserved. However for Web apps and command line tools current Core's all cross platform and surprisingly performant. Open source has really helped Core in performance terms, I've seen some tests put Kestrel (Core Web server) in the top 5 servers.