+2 2 0
Published 9 years ago by AngraGit with 0 Comments
  • What is Mono?

    Mono is a project that provide the runtime support for Immediate Language (IL) and the compiler to generate the IL from C# or VB codes. Mono have several projects under it's umbrella to support the compatibility across several platforms.

    What can it do?

    It have partial support for .Net 4.5 Framework, but have support for almost every other major release in .Net Framework except for Silverlight, WPF, and WFF. Compatibility Page for Mono.

    It have relative support for interfacing with other libraries on Linux with the use of Marshaling and Interop Services within it's framework. There are other projects that support the case when it's necessary to interface with a larger library, Mono have a project for this called, CppSharp which uses the Clang project to analyze C/C++ headers and generate the interface for it. SWIG is also available for generating the interface when CppSharp cannot generate the interface. I am going to include a small self-explanatory tutorial since it is absolutely critical to have a working interface with Linux libraries from C# (you can improve upon from this.)

    Tutorial for interfacing C/C++ with Mono. (Please note, you WILL have to tweak it further to improve the interface as some of the functions and types will be missing from this tutorial.)

    Compile to Native

    Mono is capable of compiling IL to Native binary (both Shared and Static linking) and further reduce the memory footprint and potentially give a better performance to do a task. There are few methods of doing this,

    Mono AOT is very straightforward as described here (Please note, do not attempt the last 2 commands at the bottom of the page unless you're willing to reinstall Mono after removing the Mono folders manually.)

    Another method is to use Mkbundle which does support Shared and Static linking, however static linking have a restriction that it will trigger additional restriction from it's LGPL and you may have to buy the licensing from Xamarin if situation warrant it. Mkbundle explaination

    New Features with VNext

    Microsoft have open source their ASP .Net framework and looking to improve VNext by removing System.Web library and allowing Mono to have equal access to the features that VNext provides on Windows. This project focused toward MVC programming design in web application in ASP .Net and it still have yet to go before prime-time, but it's at a stage that it can be usable. Check out VNext

    More to Add

    I've been using Mono for significant period of time since it provides the benefit of easier C/C++ interface and better readability than several languages in my experience. While granted, Mono is operating under the promise from Microsoft not to sue for their C# and CLI EMCA Specification, MIcrosoft have already open source several of their projects including the compiler Roslyn and further consolidate the future for Mono for long term by the fact that the promise is upheld for nearly 6 years now. I may add more information about Mono in time, but I feel I have added quite a significant amount of information about this project for now which took me hours already.

 

Join the Discussion

  • Auto Tier
  • All
  • 1
  • 2
  • 3
Post Comment

Here are some other snaps you may like...