I know the converse is not true, but if my application works using Mono is it guaranteed to work if I switch to the real deal? If not, where can I find a list of caveats?
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Both Mono and .NET are supersets of the ECMA/ISO CLI family of specifications. However, neither .NET nor Mono are subsets of the other. Both Mono and .NET add features on top of ECMA/ISO CLI, but while Mono implements many of .NET’s additions, .NET does not implement any of Mono’s additions.
Here’s a few examples:
Note, however, that (except for the arrays), all of these are clearly distinguishible by their namespaces, since none of them live in the
SystemorMicrosoftnamespaces.EDIT: Actually, most of the above-mentioned extensions are explicitly designed to also work on .NET. For example,
Mono.Simdalso runs on .NET, but without the runtime support that the Mono VM has, it’s unusably slow. (Basically, all the SIMD operations are implemented in C#, but the Mono compiler detects those calls and replaces them with their corresponding assembly instructions. That way, they work on .NET, but without the special treatment, they are significantly slower.) Also, the C# REPL is currently being re-implemented on top ofReflection.Emit(at the moment, it calls the Mono compiler directly), so that it will work on .NET in the future. Gtk# works just fine on Windows and .NET.Only the
Mono.Taskletlibrary cannot be implemented on .NET, since it requires VM-level support for continuations.