What's the best setup for Mono development on Windows? [closed] - windows

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed last year.
Improve this question
I started trying to play with Mono, mostly for fun at the moment. I first tried to use the Visual Studio plugin that will convert a csproj into a makefile, but there seemed to be no version available for Visual Studio 2005. I also read about the MonoDevelop IDE, which sounded nice. Unfortunately, there's no pre-fab Windows package for it. I tried to follow some instructions to build it by combining dependencies from other semi-related installs. It didn't work, but that's probably because I'm a Windows-oriented guy and can barely spell "makefile".
So, my question is this: What's the lowest-energy way to get up and running to try some Mono-based development on Windows?

I'd recommend getting VMWare Player and using the free Mono development platform image that is provided on the website.
Download Mono
Setup time for this will be minimal, and it will also allow you to get your code working in .NET and then focus on porting issues without a massive hassle of switching machines and the like. the VMWare Player tools will allow you to simply drag and drop the files over to copy them.
I'm looking to take a couple of my .NET apps and make them Mono compliant, and this is the path I'm going to take here shortly.

A year later and the answer to this has change greatly. You can now use MonoDevelop on Windows, or if you are more comfortable in Visual Studio you can use the Visual Studio Tools to write everything and then debug on in VM to make sure it is working on Linux.

#Chris I have found that Visual Studio is the best IDE for developing against .NET -- I think the best way to target Mono is really just to develop and build in Visual Studio under Windows then just run those binaries directly on Linux (or whatever other Mono platform you are using). There are free versions of Visual Studio if licensing is a concern. If you are developing under Linux, the best software is probably Eclipse with a Mono plugin (see The Mono Handbook - Eclipse for installation instructions) but keep in mind it doesn't have near the amount of features or language integration Visual Studio has.
#modesty Mono is a 3rd party open source implementation of the .NET framework which allows you to run .NET applications on platforms other than Windows.

One of the best things you can do if developing with Visual Studio for Mono is to get MoMA http://www.mono-project.com/MoMA. This will inspect any number of assemblies that you build and generate a report showing potential Mono problems (e.g., methods not implemented in the mono library). It can be run from a GUI or the command line for use in automated builds.

Miguel had a post about debugging Mono running on linux with remote debugging on Visual Studio. This may be something you want to look into... Using Visual Studio to debug Mono. There is also a new project called CloverLeaf whose goal is enabling debugging Mono on Windows in Visual Studio.

There's just no reason to build your app using Mono; the whole point of the .Net CLR is that the compiled output is cross-platform.
So you can simply build it using your favourite IDE (and if you like IDEs, Microsoft's is the best one to use) and then test it on Mono. Even if you get Mono working on Windows, it wouldn't be a very good test of your app's portability: what if your app does silly things like assuming filenames have backslashes in them, or that there's something special about a folder called Program Files? The best way to do portability testing is to actually test your app on the target platform.
And that's pretty easy to do with a Linux VMware player like the one at http://www.go-mono.com/mono-downloads/download.html.

Personally, I'm just compiling in Visual Studio 2008 as if it were for .Net 2.0 and then running in Mono (VS2008 on Windows in a VirtualBox, Mono on OSX). All the problems come up at runtime, anyway, so the system works perfectly.
I just found this very new link, which is amazing and shows you how to set up Visual Studio 2008 for Mono.
At the same time, setting up Mono on OpenSuse or Ubuntu inside a VirtualBox (Sun's product) is easy, painless, and doesn't force you to abandon whatever platform you normally live in.
This is not relevant to your question, but I might note that I just got into Mono and I'm amazed at how much of .Net is implemented, including much of the Winforms stuff.

My first instinct would be the rather unhelpful "Install Linux". You are somewhat swimming against the current to try and develop in mono under windows. Installing GTK and everything is a bit of a bother in my experience.
If you do feel like using linux, then you could Try Ubuntu
Otherwise:
There's some information here: http://www.mono-project.com/Mono:Windows and it seems the cygwin toolchain might be your best bet. I don't think you're going to be able to avoid makefiles, sadly. I found a slightly more explicit tutorial from O'Reilly.
#modesty: Mono provides the necessary software to develop and run .NET client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix. Sponsored by Novell (http://www.novell.com), the Mono open source project has an active and enthusiastic contributing community and is positioned to become the leading choice for development of Linux applications. -- From the Mono site.

Eclipse plugin for Mono is dead. On Linux use MonoDevelop or X-Develop if you like good commercial support (although MonoDevelop is closing on them fast feature-wise). On Windows SharpDevelop has custom MSBuild targets for compiling the code against Mono.
As Mono and MonoDevelop are changing fast, be sure to use the latest released versions, even if they are not marked as stable yet (e.g. versions shipped with stock Ubuntu are terribly outdated).
The VMWare image is a great way to start testing Windows-developed code on Linux. Don't touch cygwin unless you are already very conformable with it.

I liked the idea of trying to use MonoDevelop mostly just to make sure my stuff would work against the Mono runtimes. I guess it would also be possible to get crazy with msbuild and write some custom targets that tried to build against Mono, but that's basically emulating the now-defunct plug-in's functionality which I assume was non-trivial to build. I do have minor experience with cygwin, and I am happy typing "configure" and "make" all day long, but when a problem occurs in that process, I'm virtually screwed. I'll probably try to play with all this again, but if it takes me more than a couple hours to come up with a way to build comfortably against the Mono runtimes, I'll probably just bail.
I will try the Eclipse idea. I use that for Java, so I might be able to get the c# stuff to work. We shall see...

Related

How to develop Windows app on Visual Studio for Mac

I recently bought an iMac in order to develop my App on Visual Studio for Mac in a better environment (lots of issues on Windows), but on the Visual Studio for mac, there is no UWP projects.
It is understood that I have to create a new .NET project, but what are exactly the steps to follow in order to achieve that correctly for the app to work on Windows with a peace of mind? Should I have gone with Visual Studio code, which support the .NET core framework completely?
I saw on other answers that I need the .NET SDK tool, and so forth, but further details are needed if you don't mind on the why (not the installation stuffs, only the tech savvy explanations for the app to build correctly at the end!
You will need to run a Windows installation (eg, via Parallels or Boot Camp) and then run the Windows version of Visual Studio to create UWP apps.
You can do a lot of the business-logic coding inside Visual Studio on MacOS, but you will need Visual Studio and the Windows SDK to use WinRT types (which are required to build a UWP app) and to correctly build / package the app for deployment.
.NET is a big ecosystem. As you cannot develop all kinds of .NET projects using Visual Studio on Windows (Xamarin.Mac for example), you cannot do the same using Visual Studio for Mac (like you found, WinForms/WPF/UWP and so on). Such limitation comes from vendor SDK availability or other underlying systems.
In your case, you can easily develop web apps, Mac apps, and iOS apps. If you do want to develop Windows specific apps, like the other answer shows, please use Windows.
You mentioned ".NET SDK", but I believe that should be ".NET Core SDK". .NET Core apps are cross platform. Thus, you can develop such apps in Visual Studio for Mac, and then deploy to Windows. However, so far only console apps and web apps can be developed. What might happen in the future is still to be determined.
Visual Studio Code, however, is just a code editor. It won't give you extra flexibility.
For those whom imperatively needs to develop their app on all platforms, here is what I did, and the pros and cons:
Buying an Imac, thinking that I could also develop UWP projects within it
After realizing that I couldn't, I bought a cheap Windows 7 pro License on ebay (around 5$), and installed it on VirtualBox.
From there, I upgraded to Windows 10 for free and installed everything. It worked like a charm.
Cons: Buying a brand new IMac while a Macbook pro would have been better. An old one even since YOU CAN'T upgrade the ram.
Working on 8go of ram computer when you must give 4go of RAM to your VM isn't quite great. 4go gets you a laggy environment! Really frustrating.
So, prefer something older, but up-gradable (a cheap Macbook pro with 16go of RAM would do).
Not to mention that you will have to install Ubuntu as another VM in order to setup a .Net core Server for the majority of you.
What environment to favor while developing, most importantly when you are a C# and Xamarin noob like me?
The best being to develop from Mac as you will have FAR LESS ERRORS AND BUGS than in VS for Windows.
Correcting mistakes is really daunting and the best is really to develop from Mac to mitigate the damages, but it won't be hurdles free as well!
It took me more time debugging than coding within VS Windows.
After developing chunk of your app within Visual Studio MAC, the best is to get the code on the windows machine and arrange it to work in UWP.
UWP apps compile fastly and like a charm, so better is to get rid of errors within macOS, IOS, Android, and then go and adapt to UWP. This is easier IF YOU THINK ABOUT CHOOSING THE CORRECT LIBRARIES (working on all platforms, hence check my last advice).
From VS Mac, compile using macOS as a host! It's the easiest way to develop fastly, and correct your bugs.
Here is an article on how to get started from Mac:
https://blog.xamarin.com/preview-bringing-macos-to-xamarin-forms/
Cons: Always having to commit the code for it's use within UWP. But that's also a good way to save your project as well, so that if you screw up (like it happened to me numerous time) you roll back.
Hope that helps others whom didn't know what to do and where to start.
ALSO:
Don't follow tutorials dating from before 2017. Use the .Netstandard/.NET Core framework to develop your App so that libraries are more portable (following the blog article above should do).
Otherwise, headaches ahead!

What options do I have in terms of porting my XNA game to Mac?

I've been reading a lot into this and MonoMac/Mono seemed to be the best if not one of the only ways to go about it. I do have a MacBook Pro and it seems Xamarin bought Mono and wants something like $800 for a business edition to be able to load in Visual Studio projects. I only downloaded the free version so when I tried to load in my VS project on my Mac into Xamarin it said it didn't recognize it and that's when I discovered it seemed I needed a business edition.
A lot of what my search found was stuff that was 1-2 years old and even older. Things seemed to have changed a bit since then and with the Xamarin integrating Mono sort of thing. I've been working on an XNA 4.0 game for PC for over 7 months now and I'd like to have a Mac version. Apparently games like Magicka have figured it out and were made in XNA. I plan to release on Steam so I suppose I need to find a way to try and make it work with Steam if that's possible too. I don't really use my MacBook that often and I don't have Steam on it so I'm not really sure how to go about this.
I guess it comes down to this. I don't understand the current situation of MonoMac and Xamarin and did they aquire Mono? Do I need that expensive business edition? Are there alternatives? How does this tie in to being able to release a Mac version on Steam?
Most of the information I can find is a few years ago now and a lot has changed it seems.
MonoGame is a re-implementation of the XNA API for various platforms, including Mac.
It depends on Mono to provide a C# runtime across different platforms. And on platform specific versions of Mono (such as MonoMac, MonoTouch, etc, from Xamarin) to provide the API bindings and other features specific to those platforms.
You don't so much "load" an existing Visual Studio project as create a new project - either in Visual Studio (if the tools are available and you've bought them - but I don't think this is the case for Mac) or MonoDevelop or Xamarin studio.
To your new project, you would add your existing source files and add a reference to the MonoGame library for that platform. That MonoGame library will provide versions of the classes in the Microsoft.Xna.Framework namespace that work on that platform. Your code gets compiled against these alternate classes, creating a new binary specific for that platform.
(MonoGame will probably have more in-depth documentation of the process on their website, including how to deal with game content.)
Put simply: Use MonoGame. It is an alternate version of the XNA library, not a conversion tool.

What prevent Cocotron to be crosscompiled on Visual Studio instead of Mac OS X?

Seems like Cocotron is a good choice:
http://macdaddyworld.com/2008/10/27/adventures-in-cocotron/
But crosscompilation is on Mac / XCode. What prevents to be able to do the other way round ?
Update: just stumbled upon this news When would Visual Studio for Mac OS X /Objective C finally released as announced by Steve Ballmer?
I guess it is technically possible but out of Cocotron's scope. Cocotron works by having code developed for the Mac be compiled targeting Windows. As Apple don't provide SDKs and cross-compilers for Windows, the Cocotron project is writing another SDK whose API is compatible with Apple's and uses underlying Windows (or Linux, or Solaris) and auxiliary APIs as needed. The project also provides the cross-compilation toolchain.
Notice that the original intent of Cocotron is to provide a way for Mac developers to target their projects at Windows and/or some other Unix-based operating systems.
You want it the other way around. As such, someone would have to provide a suitable cross-compiler toolchain and somehow tell Visual Studio to use that, and link against Cocotron. I can see this happening in two ways: either Windows developers make the effort of adapting toolchains/Cocotron to Visual Studio, or Chris Lloyd is hired to do it. You can always ask him. ;-)
Also, I'm not sure if nib loading works in Cocotron but if (or when) it does, Windows developers would probably want a UI design tool similar to Interface Builder.

How to start Qt development on Windows, but targeting Maemo 5?

I've recently heard about Qt and read about how fun it is to develop with. By the way, I'm also buying a Nokia N900 and I heard that its operating system, Maemo 5, supports Qt quite nicely, so I thought I'll give it a shot.
I'm a .NET developer, so I'd prefer to develop on Windows, and if it is possible, using Visual Studio.
I downloaded the latest Qt SDK. I started up the Qt Creator and created a simple "Qt4 Gui Application". It was working fine, however, I couldn't find any options to compile for Maemo 5 anywhere.
Then, I downloaded the Visual Studio plugin and tried to create a "Qt Application" with that, however, no matter which Qt project type I chose, after clicking the OK button, the dialog just kept popping up again, so it couldn't create anything.
I also read about the Maemo 5 SDK, however, it only seems to work on Linux. (Every walkthrough for Windows started with setting up a virtual machine with Linux.) However, I'm not experienced with Linux at all, so I'd prefer to stay on Windows.
So my question is: is it possible to create Qt applications that will run on Maemo 5 while developing on Windows, or this is impossible?
Thank you in advance for any answers.
EDIT (Solution):
Since the time I started this question, a very nice development tool, the Nokia Qt SDK solves this problem very well. It is cross-platform and can be used to develop Symbian and Maemo apps alike. For the Maemo toolchain, it uses MADDE, which is exactly the tool recommended by the answer. (Note that it is no longer a technical preview anymore.)
Here is a very nice introduction video about the Nokia Qt SDK.
I would suggest getting used to Linux; after all, Maemo (or MeeGo, now) is really Linux underneath, and the official SDK is the Linux-based scratchbox.
That being said, there exists an unofficial community project MADDE:
This is a TECHNICAL PREVIEW of a new development tool for Maemo. MADDE stands for Maemo Application Development and Debugging Environment and offers the following features:
Command-line cross-compiling
Multi-platform support (Linux (32-bit/64-bit), Windows, Mac OS X)
Configurable for different targets & toolchains
Client for the device to simplify the development process
Simplicity
You are welcome to test the tool in your development process. But keep in mind that this is a technical preview. We highly appreciate your feedback in talk, the developer list and especially in bugzilla (Developer Platform -> MADDE).

Is it possible to run applications compiled by Visual Studio 2008 on Linux?

Is it possible to run applications compiled by Visual Studio 2008 on Linux? Is there plugin that can convert my project exe to a Linux runnable file?
As far as I know, there is no software that allows Visual Studio to generate non-Windows executables.
If it's a native executable (not .NET) you can try running it under WINE and see if that works. If it doesn't I'd guess the options are either to make it work with WINE or see if you can build it as a native Linux application. The latter will be rather painful if it's a GUI application, obviously, and I'd question if it is worth it. Porting a command line app might be doable but don't underestimate the work involved.
if you use dot net there is a MONO library that enables running some dot net application on linux.
but it not fully compatible.
Otherwise you can do it, (maybe using silverlite you would...)
Mono Project

Resources