[Mono-list] .Net versions ... compatibility history

Dave Curylo curylod at asme.org
Tue Aug 7 14:08:59 UTC 2012

In my experience, if you don't stray to far away from the core framework, you are in very good shape with API support. Stay away from things like Entity Framework and WPF (completely unsupported), use things like WCF and server components should be done with caution, but LINQ, TPL, or other parts of the core framework have very robust and well-tested implementations and you are much less likely to encounter issues.

Of course you should test, and particularly load test, across platforms as some of the internals work a little differently and bugs can pop up in unexpected scenarios.

As far as the runtime version included in various Linux distributions, in many cases it is better to package the runtime with your application.  RHEL / CentOS have an old mono distribution by way of the EPEL repository and by nature, that distribution uses older software versions. This isn't just a mono constraint; if you have a python application that relies on python > 2.4 (which is from 2006), then you need to package your own python to distribute to RHEL / CentOS.

I wouldn't let the OS dictate the runtime you should use if it is simply a matter of packaging a newer runtime with your application. The OS can only really dictate the shared runtime version.

On Aug 7, 2012, at 7:41 AM, edward.harvey.mono wrote:

>> From: mono-list-bounces at lists.ximian.com [mailto:mono-list-
>> bounces at lists.ximian.com] On Behalf Of Stifu
>> Keep in mind that just because a certain Mono version supports a certain
>> .NET
>> profile, doesn't mean it fully supports everything in that profile. For
>> example, Mono 2.0 supports .NET 2.0 and 3.5, but has many missing 3.5 bits.
>> Even the latest Mono versions do not support all the APIs .NET does. So
>> things are not as simple as deciding which .NET version you want to support.
>> By the way, check out the Mono wikipedia page:
>> http://en.wikipedia.org/wiki/Mono_%28software%29#History
>> It may give you the overview you're looking for. It says Mono 1.2 supports
>> C# 2.0, but that the APIs are not on par with .NET 2.0 until Mono 2.0.
> Ahh.  I was understanding before, that any given mono version is not 100% compatible with any particular .Net version, but perhaps I wasn't understanding well enough...
> Here's my new perception - The goal is to develop some applications cross-platform compatible (specifically, windows, mac, ubuntu, centos).  It is understood that the application for each platform will be a separate product, we can't just reuse all the code and expect it to work on another platform.    But we'd like to maximize the code reuse.  It's understood, the only way to do this is to start developing on one platform, and obsessively frequently test the code on multiple platforms.  The goal is to minimize the incompatibilities between platforms...
> So I guess the best approach is ... First of all, start with .Net 3.5 on windows.  Expect most of it to work on mac, ubuntu, and centos 6.  But don't hold high hopes for centos 5.  Test obsessively, with every little change.
> Sound about right?
> _______________________________________________
> Mono-list maillist  -  Mono-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list

More information about the Mono-list mailing list