What is the meaning of Mono on Windows?

It might be a stupid question ... but I just looked at the Mono project, and they have a section on installing Mono on Windows , But since Windows obviously already has a .NET runtime, can anyone tell me what exactly mean Mono for Windows? Does this help with the development of cross-platform or something else?

+60
windows mono
Apr 15 '09 at 13:18
source share
12 answers

Since Mono does not implement .Net 100% is the same as the MS.Net Framework, it’s good that you can test Mono without having to run it on Linux. Mono also has bindings for creating forms with GTK, which MS does not support.

+62
Apr 15 '09 at 13:21
source share

There are several Mono features that .NET does not do.

Mono is very modular. You can break it into small pieces and expand only those parts that you need. Don't want System.Xml? OK, it's all gone.

Mono is embeddable. You can place it inside your C / C ++ application so that users can script from a secure managed sandbox. The most famous example of this is mod_mono, which hosts Mono inside the Apache web server, and how, for example, ASP.NET is implemented in Mono. This feature goes well with the modulation mentioned above.

This has already been mentioned: static binding. Also goes well with modulation.

The compiler as a service is another. Anders Halesberg has been talking about this for a long time, and maybe he will be ready for C # 5.0. Well, Mono already has this, and in fact it has been for many years.

Miguel de Icaza, Mono Lead Developer also has an initiative that he calls "Embrace and Extend.NET" that extends the CLI in ways that cannot (currently) are possible with other CLI implementations (including .NET). So far, Embrace and Extend.NET have three functions.

Mono.Simd, which provides secure and controlled access to the SIMD instructions of the underlying CPU (for example, SSE on Intel or AltiVec on PowerPC). Used for games and graphics.

64 Bit-mass indexes that are allowed by the ECMA specification, but Mono is the only virtual machine that actually provides them. Used in a supercomputer.

And more recently, the sequel. This is the first time Mono goes beyond the scope of the specification: long array indexes work perfectly according to the specification, and Mono.Simd also works on every CLI compatible implementation (albeit very slow), but Mono.Tasklet needs special support from a VM that is not part of the CLI or .NET. This is used for the logic of the game and, for example, in Second Life.

+68
Apr 16 '09 at 23:04
source share

Mono does what .Net does not.

For example, mono supports static binding, so you can create, compile, and distribute your application without requiring a separate installer at runtime. If you created an application that relies on mono for cross-platform, there are some differences from .Net, and therefore sticking to mono on Windows is the best guarantee of compatibility.

.Net does some things that mono doesn't.

There are several places in BCL that have not yet been ported for mono, such as WPF and Winforms.

If you need an application that will also work on Mac / Linux, you'll probably want to develop it for mono first, even if you do most of the work with Windows.




Note: all this precedes .Net Core / Standard.

+24
Apr 15 '09 at 13:23
source share

From Mono technical questions :

Why do you need Windows when you can run the real thing?

There are various reasons:

Windows support helps us identify the portable parts of Mono from non-portable versions, helping Mono become a more future.

This helps us, since we can isolate problems in Mono problem splitting (is it runtime or OS problem?).

About half of Mono members are Windows developers. They have many different reasons for contributing to the effort, and we find it very important that developers run the runtime environment on Windows without forcing them to use the new operating system.

Mono does not greatly modify the Windows registry, updates system DLLs, install DLLs on the Windows / System32 track.

This helps Windows developers test their code under Mono before they are deployed to Linux.

Mono and applications that embed Mono can be deployed without (you can "xcopy" deploy your applications and the required Mono files without installing .NET at run time).

+13
Apr 17 '10 at 2:08
source share

If you want to develop a cross-platform application in C #, then using Microsoft is not the smartest, since there is no fully compatible alternative for other platforms.

Thus, using Mono for Windows for application development ensures that you have few problems migrating to other operating systems (if you avoid other holes, such as P / Invoke).

+12
Apr 15 '09 at 13:21
source share

Some people used it because they were not allowed to install the .Net infrastructure on their Windows PCs due to the number of registry files and system files. (In heavily controlled environments.)

Mono, on the other hand, is contained in the program files on its own and writes only the registry key with the path (which does not need to be run).

I think this is stupid, but this is what several users have told us about.

+8
Apr 15 '09 at 14:57
source share

This mainly helps in developing Mono applications for specific Mono libraries. Also, to help advance the business so that developers can work in their natural environment while developing for Mono.

+4
Apr 15 '09 at 13:21
source share

While not of much interest, there are a few cases where mono has improvements over Microsoft's standard runtime. This year, Miguel talked about some of them at PDC:

See these posts:

+3
Apr 15 '09 at 13:24
source share

even if you have a program dynamically linked to Mono, you can have this compiled .exe and Mono runtime on pendrive and switch to another computer without .NET / Mono and run this program on a new PC without any setting of the runtime, t .e. it leads to portable applications (especially useful as portable applications for USB drives) This is not possible with .NET. You must have the .NET runtime set by a specific installation method, that is, the runtime containing the copy of the folder and the insert is not possible.

+2
Sep 22 '10 at 6:23
source share

I think the main reason they did this is because they can run .NET applications on Mono and .NET side by side to compare them. In addition, there are several applications that depend on Mono libraries.

+1
Apr 16 '09 at 23:08
source share

To add to the many reasons mentioned in other answers, Mono for Windows may need to be installed on Wine in order to allow .Net applications to run inside Wine.

0
Oct 17 '12 at 10:44
source share
-7
Apr 15 '09 at 13:23
source share



All Articles