What role does the Mono framework plays nowadays?


Back when the Microsoft .NET framework only worked on Windows, you could resort to the Mono implementation to run your projects on other platforms. However, now that the Microsoft .NET Core framework support multiple operating system (plus is open source etc), what is the role of the Mono project in this new ecosystem?

Is the Mono framework what people would rely on if they wish to run the full version of the .NET framework on multiple operating systems? If yes, is it fair to say that if your application can run under .NET Core you should favor using the .NET Core instead of Mono?

To be clear, I am not against Mono nor am I trying to put Mono down. All I am trying to do is to understand how all this ties together to help me make more informative decision regarding the technologies we use now and try to predict what we may be using in the future.



Mono is at least used for Unity programming still; as far as other uses, I’m not so sure. I could guess that the .NET BCL implementation is further along in Mono than in .NET Core; but that’s purely a guess (and probably becoming rapidly superseded by the progression of .NET Core’s implementation of .NET Standard.


Other than Mono support for full .NET framework its also much more portable. It runs on ARM, MIPS, PPC and x86, x64, etc. It also runs in NACL, PNACL, asm.js (early stages) and WASM (early stages).

Its biggest issue for me is its performance is behind the .NET runtime. Mono has been portable for so long, I don’t see it going away anytime soon… just as the .NET framework isn’t.

I think the bigger question is, does .NET standard (which runs on Mono, .NET, WinRT, Win32, macOS, UNIX, etc) have the features you need for your project.

Another issue is .NET Core support isn’t built into the Linux MonoDevelop flatpak version (at least yet). So if you find that lack of visual features in VS Code not to your liking, Mono is much better for client side dev on Linux when used in MonoDevelop.

.NET Core seems totally focused on the cloud side of the web world (huge issue for me). Mono seems to have a much heavier focus on the client side (huge plus). Negating the issue that is javaScript is something very needed in my view. Mono will get there first I think.


Mono today is the framework that powers Xamarin, so you use it whenever you build applications for Android, iOS, PS4, XboxOne (game partition) and webassembly.

Additionally it supports both the .NET standard API as well as the .NET desktop API on Linux, Mac and Windows. This is the functionality that Visual Studio for Mac requires, so it is used for this.

For the last couple of years, Mono has been trying to converge in its class libraries with the implementation from .NET Core and the Reference Source, to avoid code duplication, reduce the divergence and be more compatible with it. Most of the time, it is a net win, but in some cases we have implementations that are slightly better tuned for our workloads and this is why we have not fully migrated.


.NET Foundation Website | Blog | Projects | Code of Conduct