I talked about this earlier.
The mono tools for Visual Studio is a commercial product that easily enables you to test and port your Windows applications to mono.
As I told before this is really a great idea. Because I think Visual Studio is the best IDE and Linux is the best server OS (in my opinion, it’s more efficient and more robust than Windows Server). So, I think it’s the perfect gateway between this two very different (but very close since Mono appeared) environments to achieve greatness.
And if you don’t want to buy it, well, you don’t have to. Mono is free and you can very easily test your Windows programs on it. You just have to install mono, copy your exe (plus its required DLLs) to the Linux host and type something like “mono SampleProgram.exe”.
Yes, I have tested MonoVS with the version 0.2.2641 (on both client and server). I installed OpenSuse 11.1 and added the MonoVS software repository, and everything worked ! I would have prefer to get it from SVN in order to use it in my Debian hosts but the mono development team seems to have removed it from their SVN repository.
So, the Mono Remote Debugger for Visual Studio works, but there still some bugs. Deployment is super fast and it copies all the required DLL.
Remote debugging can be used (launching it is really fast too), but has some bugs, here are the ones I could find :
– On the classical mouse hover debugging popup, the expandable element “Non-public members” is always empty if available. If not available, every private member is displayed like any other public member variable.
– In my first tests, the “watch” window wouldn’t allow any variable to be expanded.
– If you have a variable not yet declared (but available) in the watch window and try to expand it, debugging just stops without any warning
– Sometimes, when I stop debugging I get a message saying something went wrong and the debugger might be unstable
– Once, after making a pause and then a stop, it totally crashed Visual Studio (but it only happened once).
And this is not really a bug, but unhandled exception are displayed in the dirty popup. This isn’t pretty.
If do “Run remotely in Mono”, it will display the Console output in the server’s console. If you do “Debug remotely in Mono”, the Console output is redirect the Debug output window.
This tool is still in private beta (I guess anyone has a good chance to be accepted like I was), but it can already help a lot of people. Even if you just use the Remote Running (which includes deploying the assembly), it still worth using this tool.
Just a little post for all these people who seem to think Mono is just an other short-term open-source software.
I’ve used it for quite some time with a production “real time” network server, which is running for something like 6 months now, and it performs very well. I do everything on my Windows host and then copy and launch the final app on the Linux host. But there are still two problems :
- Not all .Net classes are supported. WCF (the most powerfull to do two-way async/sync communication) isn’t one of them.
- You can’t use the powerfull Visual Studio debugger and you can’t take advantage of the PDB files (as they are not compatibles with mono).
Well, the Mono team has solved this second problem with their Mono Tools for Visual Studio. I have already applied twice and haven’t received any inivitation for the private mono tools tryout. But I guess it will be released to the public pretty soon (within 6 months). The mono guys are working really fast (but not as fast as the Microsoft .Net development team).
Sometimes people should just consider using Mono for their (web) applications. In my opinion, an ASP.Net + DataBase Linux server is faster to manage than a equivalent Windows Server. It doesn’t slow down with uptime, it doesn’t have dozens of useless services, it doesn’t require to restart for updates and real problems are way easier to diagnose.
The real limitation for me are the super Microsoft APIs and tools like WCF, LinQ, SQL Server 2008 (with its Integration and Analysis services) that you can only run on Windows.