Does Xamarin Monotouch run on Microsoft Windows Phone mobile? - windows-phone-7

Need to program a GUI for iOS, Android, and Microsoft Windows Phone devices (Windows Phone 7/8).
Does same program written in Xamarin Monotouch C# run on all three platforms?

To elaborate a bit on #choper answer...
Xamarin.iOS (formally MonoTouch) gives you the tools and the API/SDK required to write .NET applications that will run on iOS devices (or the simulator);
Xamarin.Android (formally Mono for Android) gives you the tools and the API/SDK required to write .NET applications that will run on Android devices (or the emulators);
Xamarin.Mac gives you the tools and the API/SDK required to write .NET applications that will run on OSX computers;
All products are based on the open source Mono project. They all provide addins to work with the Xamarin Studio IDE (and optionally XI and XA can work inside Visual Studio, see note).
So the same product won't allow you to write once, run everywhere. However they will let you share a great deal of logic code (often beyond 80%) between the Xamarin-supported platforms and others .NET platforms (Windows, Windows Phone...). Some design patterns (MVC, MVVM) and libraries (e.g. MVVMCross) can help you maximize code sharing - but they are optional (i.e. you can roll your own).
You'll still need to write some user interface code for each specific platform - but that gives you the ability to provide a native, high quality user experience on each platform, without rewriting the application everytime (e.g. ObjC on iOS/Mac, Java on Android and C# on Windows/Windows Phone).
note: A Mac is still required to build/debug iOS applications from Visual Studio.

No, it isn't. It will run only on iOS and also like Xamarin.Android/Monodroid will run only on Android

Related

Can xamarin apps be built for Windows, MacOS with same source code?

Given an app written in C# for Xamarin, can it be built to run on all the supported platforms with minimal changes, including Android, iOS, MacOS, Windows?
I realize that Xamarin claims 90% of the code is shareable across platforms (and 10% needs to be customized), and I'm referring to that "90%".
What I don't understand is whether that 90% is shareable across the different Xamarin tools,e.g. Xamarin.Forms and Xamarin.Mac or if those are substantially different tools with different APIs, etc.
For example, I see that with Xamarin.Forms I can build for iOS, Android, and Windows. But not MacOS. So, on a Mac, can I install Xamarin.Mac and then build the same app for MacOS ?
You can add a MacOS target for your Xamarin.Forms-based UI, of course, this is done via Visual Studio for Mac:
https://learn.microsoft.com/en-us/xamarin/xamarin-forms/platform/other/mac
There are items within Forms that are not feature complete on MacOS and thus it is still in a "Preview" release and those are listed on the "Platform Support macOS Status" wiki:
https://github.com/xamarin/Xamarin.Forms/wiki/Platform-Support-macOS-Status
Xamarin.Forms is the framework that allows you to create cross-platform apps between Android, iOS and UWP. In my experience, a lot of the features of Xamarin.Forms do not transfer over to Xamarin.Android. In fact, a big chunk of the way things are done for UI Xamarin.Forms will not transfer over to the Xamarin.iOS and Xamarin.Android. Most of the times when I find a solution that works in Xamarin.Forms and I try to do the same thing in Xamarin.Android I end up just figuring out the problem myself in Xamarin.Android from scratch.
When they say that 90% is shared, they mean that within Xamarin.Forms... 90% of the work on your models and code behind can be shared between the projects (within that Xamarin.Forms solution) and 10% will have to be custom tailored for each platform (UWP, Android, iOS)
EDIT: Just for clarification in the future, you need an iOS device or an iOS virtual machine to compile the code on iOS
To build Xamarin.iOS apps with Visual Studio 2019 on Windows, you will
need:
A Windows machine with Visual Studio 2019 installed.
This can be a physical or a virtual machine.
Windows system requirements
A network-accessible Mac set up with Apple's build tools and Xamarin.iOS.
Visual Studio 2019 accesses this machine over a network
connection to use Apple's build tools, which are required for
compiling native iOS applications.
Mac system requirements
source: https://learn.microsoft.com/en-us/xamarin/ios/get-started/installation/windows/?pivots=windows
As long as you use .Net code and Xamarin.Forms it is 100% portable/sharable across every single project. Xamarin.Forms are currently in beta for macOS and Windows WPF (but for UWP it is not beta), and for macOS particularly they don't have the true native look.
Xamarin does support using the native interfaces and native APIs and whenever you do that, it is not portable.
So there is nothing like 90% sharable, it may be some estimate for some cases. It can be 100% sharable or it can be only 10% sharable depending on your project and how much you stick to the sharable APIs.

Is there a way to convert Windows Desktop applications to Universal UWP and Vice Versa?

In Visual Studio I am trying to decide which type of application I should start with. I want to make it available to as many devices as I can.
If I make a Windows desktop application (.NET/WPF), I could convert it to a UWP but it only targets desktop applications, which is pointless device-wise.
But if I make a UWP, it would work with Microsoft devices, but not ones running a Windows older than Windows 10. A lot of people still use older versions of Windows, and I would rather make a Windows desktop application than limit the use to a specific version of Windows.
It would also be cool to be able to make it work on other devices like Android.
QUESTIONS: Is there a way to convert a Desktop application to a Universal UWP (with or without the code)? Is there a way to convert a Universal UWP to a Desktop application (or make it run on older Windows machines)? If not, what would be the best application type and why?
Also, is there a different application type I should use instead that I'm not thinking of?
NOTE: Microsoft Project Centennial converts Desktop applications to UWP's, but they only work on desktop machines.
I would go UWP and use Xamarin forms if I were you.
Using Xamarin you can write the one UWP app and deploy to Windows, Android, and iOS.
You answered most of your question yourself already. You have the following options (considering you want to continue using your .NET/XAML skillset as you mention WPF and are not looking into a web alternative):
Write a desktop app in WPF: you want to support Windows 7 or need features that are currently not available yet in UWP (some APIs, sandboxed UWP, ..). As you mentioned, you can use the Desktop Bridge to bring the app to the Windows 10 store as well with the downside of not running on mobile, HoloLens, Xbox (as of today). Then again, WPF doesn't run on those platforms either.
Write the app from scratch in UWP: run on Windows 10 on all available platforms. Yes, you will leave the Windows 7 users in the cold but not that Windows 7 is already in the extended support block so people will have to upgrade at some point.
Write the app from scratch with Xamarin.Forms, creating a single app that runs on Windows 7 (WPF), UWP, Android and iOS. Note that this is a somewhat different XAML dialect right now, but XAML Standard is working on unifying the dialects in the future.
A bit more work is to share most of your code with .NET Standard or PCL libraries and write multiple native UI's on top of it (which can be done with Xamarin).
If you're looking for longer term support pick either UWP (the way forward for Windows) or Xamarin.Forms.
Try Microsoft's Desktop Bridge tool for UWP. Using the Desktop Bridge, you can gradually migrate your code to the Universal Windows Platform (UWP) to reach every Windows 10 device, including phones, Xbox One, and HoloLens
Using Desktop bridge tool, you can
Convert MSI to APPX package
Upload your Desktop app (after conversion to APPX package) to Store
Take advantage of UWP features like Live tiles, Push Notification and many more)
And, for Android and iOS app try Xamarin. UWP project cannot converted to xamarin project. You've to write seperate project. I recommend you to try Xamarin.Forms which allows you to boild UWP, Android and iOS app with shared code.

Is it possible to develop a desktop application, which will be supported in both Mac and Windows, using Xamarin in Visual Studio?

Our team would like to develop an application in Visual studio and Xamarin. The app needs to be supported in both Mac and Windows. We prefer Xamarin because the back end code can be shared. If possible, how to build and publish it so that it can be only installed in the machines. We are not planning to submit this app to the corresponding app stores.
You can write and Windows Application with C# using WinForms, WPF, WinRT (Windows Store apps).
Also you can write Mac application with C# using Xamarin.Mac.
To share the code between Windows App and Mac App, you just need to split your code into shareable Business Logic (part) and specific UI part.
To share the code, just use PCL libraries.
Yes.
The core business logic can be written in shared code usable on both platforms.
You have a couple of choices of how to develop the UI. You can use native or Xamarin Forms.
If you use native then I would suggest using the MVVM pattern with a framework like MvvmCross. You can then write the bulk of your app in shared code and just write the UI in platform-specific code, with the windows UI written as a standard windows WPF or UWP app, and the Mac app written using Xamarin.Mac using the native Mac API.
If you want to use Forms then you may have to compile the binaries yourself to get Mac support as it won't be available till roughly May 2017, but you could get started building a Forms app for UWP/Windows now and add the Mac project once it is available.

Xamarin IDE and visualstudio for windows +Mvvmcross

I have some confusions About the IDE to use for MvvmCross
a) VisualStudio (VS) uses Xamrarin.iOS and Xamarin.Android plugin for iOS and Android development. But can we also use PCL(Portable Class libraries) and MVVMCross/Monocross frameworks in VS? I see the PCL option on VS but, i don't see the support for Android & iOS. Do i need to install additional plugin for PCL to support these two platforms as well?
b) Xamarin IDE supports Android and iOS development on Mac but, is it true that Xamarin doesn't support Mono.iOS on windows? Isn't it strange that Visual studio can use the network mac for iOS development but why not Xamarin Studio?
Thank You for your time.
Regards,
Saurav
a) VisualStudio (VS) uses Xamrarin.iOS and Xamarin.Android plugin for iOS and Android development. But can we also use PCL(Portable Class libraries) and MVVMCross/Monocross frameworks in VS? I see the PCL option on VS but, i don't see the support for Android & iOS. Do i need to install additional plugin for PCL to support these two platforms as well?
MvvmCross currently uses Profile104 for Portable Class Library development. You can easily develop for this profile without installing Android and iOS. The mapping of PCL profile to platforms is, however, quite confusing (it's not exactly obvious) so the easiest way I find to create a Profile104 PCL is:
to create any PCL
then to manually edit the csproj file to say Profile104 - look for a line like: https://github.com/slodge/MvvmCross-Tutorials/blob/master/Babel/Babel.Core/Babel.Core.csproj#L14 in the csproj
I have customers who develop in medium size teams where only some people have the Xamarin tools installed - most people have just Windows tools and work on the PCLs using Unit Tests and using WindowsPhone/Store user interfaces.
b) Xamarin IDE supports Android and iOS development on Mac but, is it true that Xamarin doesn't support Mono.iOS on windows?
Yes, this is true.
Isn't it strange that Visual studio can use the network mac for iOS development but why not Xamarin Studio?
This may feel strange, but I believe this is actually this is Xamarin listening to their customers.
I believe, that the reason customers wanted Windows support for iOS was because they wanted to use Visual Studio and they wanted to use plugins like Resharper. Xamarin provided this in their 2.0 release.
It is true that they could also have added iOS functionality to XamarinStudio for Windows as well - but this (I believe) wasn't what any of their customers were asking for - so adding it would have created more work (both in creating and maintaining it) without adding any significant benefit (IMO)

Developing for tablets using Phonegap

i'm starting development with phonegap for tablets and need to clarify some issues.
1) as i understood, i can work in any IDE: Visual Studio, Idea, XCode. All what i need from IDE is emulator to test some specific things, for example interacting with file system, or making JSONP requests to some site's API. Is this true?
2) after developing of application for one single platform, i can take the 'www' folder and build it for other platforms using PhoneGap Build, isn't it?
3) is there any way to emulate tablet in visual studio?
1) You need the IDEs for target-platform-specific coding. If you want to make a PhoneGap plugin for Windows Phone, you'd use Visual Studio for the native part. If it were a plugin for iOS, you'd use Xcode.
If you don't want to use PhoneGap Build, you can also build packages for the target platforms using the respective IDEs.
IDEs are also the primary way to test your application, since you can't easily test
features specific to a mobile device in your browser. If you have the SDKs for your target platforms installed, the respective IDEs should feature a way to run an emulator. You will probably have to set up a project for your app, according to the instructions here.
2) Generally, your application should run on any supported platform, as long as you stick to the PhoneGap API. Some features might behave differently on different platforms, so you'll still have to test throroughly on all platforms you indend to support.
3) If you install the Windows Phone SDK, you can use an emulator. There is some information on what the emulator is capable of on MSDN.

Resources