What is the difference between MonoTouch and MonoDevelop? - xamarin.ios

On main page there is MonoDevelop IDE, and MonoTouch (IDE?)
What is the difference? Are they two separate IDE's? With different features?

MonoDevelop is the free cross-platform Mono IDE. It can be used with Mono, MonoTouch, MonoDroid, MonoMac, etc.
MonoTouch is the commercial SDK that exposes the iOS API for use with C#.

MonoTouch vs MonoDevelop From the Wiki:
Unlike Mono applications MonoTouch
"Apps" are compiled down to machine
code targeted specifically at the
Apple iPhone. This is necessary
because the iPhone kernel prevents
just-in-time compilers from executing
on the device.

Related

Avalonia / LibVLCsharp support for iOS, Android and WASM

I'm planning to create a cross platform (Windows, Linux, macOS, Android, iOS, Wasm) audio player using latest AvaloniaUI along with LibVLCSharp. Unfortunately only support for Windows, Linux and macOS is listed for Avalonia.
I think that this might be a lack of documentation only, since Avalonia pretty recently introduced Android and iOS support officially.
So how is the state of this? Would it be possible to create a REAL cross platform player for all the listed platforms with LibVLCSharp? And if not, is there an alternative, that could be used with AvaloniaUI?
I found these libs for C#, that are (partially) capable of playing audio:
LibVLCSharp (unmanaged/wrapper, cross platform including Android + iOS)
SharpAudio (mostly managed, cross platform, but poor codec support atm)
cscore (unmanaged/wrapper, well designed, development stalled)
libsoundio-sharp (unmanaged, pretty raw)
ManagedBass (unmanaged/wrapper for BASS, awesome but only free for open source)
NAudio (awesome managed library, but windows only atm, although efforts to evolve to cross platform)

Can I build and compile cross platform Xamarin apps on Linux?

I'm using Fedora 27 as my Operating System, and I'm wondering if I could get the Xamarin toolset working on it to create cross platform apps with an IDE like monodevelop, VS Code or Rider.
I heard Xamarin get's new templates for Xamarin.Forms for Linux, but I can't find any recent development news about that.
Yes, as of mid-2018, it is somewhat possible to develop a Xamarin.Forms app under MonoDevelop on Linux. I successfully managed to do it.
Basically, you need to have at least two things:
A shared library project, containing all the cross-platform Xamarin.Forms code and Xaml files. For some reason, on Linux this library project have to be compiled with .NET Core toolchain and not Mono toolchain (otherwise there is some GTK issues at runtime later on). The target framework is .NET Standard 1.0 or .NET Standard 2.0, and the main dependency is the NuGet package "Xamarin.Forms".
A Mono/GTK# platform-specific project for Linux, containing all the platform specific code: initialize GTK and Xamarin.Forms.Platform.GTK backend, and start the Xamarin.Forms code. The dependencies are the NuGet package "Xamarin.Forms.Platform.GTK", references to locally installed GTK# of your linux distribution (gtk-sharp, atk-sharp, etc...), and obviously a reference to the shared library project. Note that only GTK2 is supported and not GTK3.
The shared library project may be developed with MonoDevelop, Visual Studio, or JetBrains Rider. Note that with MonoDevelop, there is no XAML designer... so this is easier to do the design stuff with Visual Studio on Windows.
The platform specific project may be developed using MonoDevelop or Rider on Linux.
Here is a picture of the project structure under MonoDevelop:
There is a "HelloWorldXamarin" library project. It uses the .NET Core toolchain targeting .NET Standard 1.0, and have a dependency to NuGet package "Xamarin.Forms"
There is a "HelloWorldXamarin_Linux" project. It uses the Mono toolchain targeting Mono/GTK# for Linux, and have dependencies to GKT# and HelloWorldXamarin library, as well as dependency to NuGet package "Xamarin.Forms.Platform.GTK". You can see the platform specific code on the right.
And a picture of the result:
So you can now develop cross-platform Xamarin.Forms GUI applications for Windows,Mac,Linux,Android,iOS...
Yes you can and how well it will work on Fedora I'm not sure, but it looks like development is still in progress for the GTK Backend on Linux. For more information, there's a Github repo here that shows how far along it is and how you can try it yourself.

Can I use Visual Studio to develop Mono applications?

I have developed a .NET 4.5 application using WinForms. I want my application to run not only on Windows, but also on Linux, so I decided to port it to Mono.
However, I can't find any information on how to use Visual Studio for Mono. I don't want to switch to MonoDevelop, since VS provides much of the functionality I want and I am already familiar with it.
There apparently used to be something called Mono Tools for Visual Studio, which David Lively insists works on current VS editions, but I don't want to run an extension that was deprecated 3 years ago. I don't even know where to download the extension - it redirects to Xamarin, and Xamarin seems like not what I want because while it mentions VS integration, it forces me to install a bunch of Android and Java SDKs (why?).
As far as I can see, .NET and Mono code looks fairly similar, and there are 3 main concerns:
Making VS use the Mono compiler instead of the C# compiler, so I can tell if non-Windows users can compile my source, and also get notified about missing libraries
Making IntelliSense suggest only Mono-supported things
Making the "Run" command run the application using Mono, not .NET, so I can test it correctly
Is there really no easy way of accomplishing these?
Note: I want to develop Windows and Linux desktop apps, with a WinForms GUI or equivalent only. I am not interested in mobile.
In general, you can just target .NET 4.5 and compile with Visual Studio and the resulting assembly works as-is on Mono (assuming you don't use platform-specific stuff via p/invoke, etc).
Mono's WinForms support isn't perfect though (and nobody actively works on it), so you still need to test by running the app directly on Mono. Missing APIs aren't usually the problem, it's more that the Mono implementation has different behavior/bugs.
Another alternative to WinForms might be Xwt.

Async/Await in portable class library targeting Windows Store, iOS and Droid

Developping an MvvmCross application targeting Android and iOS (Xamarin/Mono) and Windows Store (because it's so easy/fast to debug compared to iOS/Android).
The Core of the app is PCL based.
Is it possible to use Async/Await in the Core library?
Xamarin mono supports Async/Await, and Windows Store supports it.
However, when selecting only Net4.5, Windows Store, Mono Android and MonoTouch as the PCL targets, SL4 and WP7.5 get automatically selected and Async/Await is not availlable anymore.
The latest I have is: TPL on PCL of mvvmcross
But PCL support from Xamarin has officially launched in the last week - so the latest I have is be out of date. Miguel has promised a blog post on the current status when he returns from Build.
Also, I have seen user comments like "I'm using asyncbridge and profile47 with heavily usage of async inside PCL. Works perfect on iOs and Android, with MvvmCross events it looks like a magic" from http://forums.xamarin.com/discussion/comment/18872/#Comment_18872 - would love to see this more fully blogged, explained, documented by those who have it working.

MonoDevelop and MonoTouch: what is the runtime version selection about?

I have just upgraded to the MonoDevelop 2.8 Alpha and built my MonoTouch app with it.
I noticed that in the build type dropdown, where I can select Simulator debug/release and iPhone debug/release, there are three separate entries:
Default Runtime
Mono 2.10.2
Mono 2.10.1
My MonoTouch version is 4.0.4.1. I thought MonoTouch was coming with its own Mono runtime. Does the dropdown make any difference for MT projects?
No, the target runtime doesn't affect MonoTouch. It only matters for "normal" desktop/server .NET projects.

Resources