Xamarin Visual Studio IOS Development Without a Mac?

C#AndroidIosMacosXamarin

C# Problem Overview


I'm a .NET developer and want to write an IOS & Android app in C#. I've had a read around Xamarin for Visual Studio which looks interesting if not a tad expensive!

Do you need a Mac to debug your code? Do you just need a networked Mac to actually deploy the app to the Store?

Is the best option just to buy a Mac and run Windows with VS in a VM or can I just use my windows machine, write & debug the code in Windows then just hook up to a networked Mac for final deployment?

C# Solutions


Solution 1 - C#

From May 2017, you can develop app without MAC.

Microsoft Xamarin introduce a Live Player. With Live Player, iOS apps can be deployed directly onto an iPhone or other iDevice from a PC running Visual Studio, where the code can then be tested and debugged.


WARNING The Xamarin Live Player Preview has ended. But it changed Hot Reload. With this feature, you can develop iOS app with your iPhone See discussion

See this video: https://www.youtube.com/watch?v=awgZDL1a3YI

this is Live Player Get start section: Live Player

Note: The final build and submission to the App Store will still require a Mac

Device Requirements

The Xamarin Live Player app supports the following devices:

iOS

  • iOS 9.0 or later.
  • ARM64 processor.
  • Check the App Store for a list of supported devices.

Android

  • Android 4.2 or later.
  • ARM-v7a, ARM-v8a, ARM64-v8a, x86, or x86_64 processor.

Limitations

There are some limitations on the things Xamarin Live Player can run, including the items below:

  • Android user interfaces designed with AXML files are not currently supported.

  • Some iOS storyboard features are not supported.

  • iOS XIB files are not supported.

  • Custom Renderers are not supported.

  • Xamarin.Forms Effects are not supported.

  • Embedded resources are not supported (ie. embedding images or other resources in a PCL).

  • Limited support for reflection (currently affects some popular NuGets, like SQLite and Json.NET). Other NuGets are still supported.

  • Some system classes cannot be overridden (for example, you cannot implement a subclass).

  • Some platform features that require provisioning can't work in the Xamarin Live Player app (however it has been configured for common operations like camera access).

  • Custom targets and build steps are ignored. For example, tools like Fody cannot be incorporated.

Solution 2 - C#

Yes, you must have a Mac to do Xamarin.iOS development. The Mac is required for building as well as running the iOS simulator. You can either use it as a build server, and actually do your development in Visual Studio (either in a standalone PC, or on a VM running on your Mac), or you can do your development directly on the Mac using Xamarin Studio as your IDE.

Solution 3 - C#

You can use Xamarin Studio instead of Visual Studio and build iOS application by C#. First install VMware Workstation and then download OS X image and run it by VMware.

Then Install tools on it and enjoy.

Tools :

EDIT : The following links are out dated, You must install Mac OS 10.10 in order to be able to install XCode 6.

iOS Tools that you need:

  1. Mac OS X image for Windows Note: Max OS X Installation Help: http://www.sysprobs.com/easily-run-mac-os-x-10-8-mountain-lion-retail-on-pc-with-vmware-image

  2. Mono: http://download.xamarin.com/MonoFrameworkMDK/Macx86/MonoFramework-MDK-3.2.4.macos10.xamarin.x86.pkg

  3. Xamarin Studio: http://download.xamarin.com/studio/Mac/XamarinStudio-4.2.1-1.dmg

  4. MonoTouch: http://download.xamarin.com/MonoTouch/Mac/monotouch-7.0.4.209.pkg

  5. Xcode

Solution 4 - C#

Update 2018

Install VirtualBox https://www.virtualbox.org/

Install MacOs 10.13 on VirtualBox https://techsviewer.com/install-macos-high-sierra-virtualbox-windows/

Create or login with an apple account on the mac

Install XCode 9.0 https://download.developer.apple.com/Developer_Tools/Xcode_9/Xcode_9.xip

Enable Remote Login System Preferences > Sharing > Remote Login > Enable for All Users

Configure VirtualBox with an additional network adaptor (host-only)

In Windows > Visual Studio (Xamarin Project) > Pair with mac

Enter the IPaddress of the second network adaptor

Let Visual studio install Xamarin IOS, IOS SDK, additional tools on the Mac

All set up.

Solution 5 - C#

An option is to use a remote service to do this. For example: http://www.macincloud.com

Solution 6 - C#

Anybody know that a Virtual-Machine is the solution! but when you want to have an OSX on windows it's not really easy as you just talked about it. it's very important to find best OS ROM.

check it out here. and you have to know that limitation is Apple's doing, not Xamarin's.

Solution 7 - C#

As someone that developed 3 Xamarin Forms apps, I would like to bring some points about the options:

Pair with a virtual Mac (VMWare, VirtualBox or cloud)

I worked this way for a while, but virtual machines consume a lot of hardware resources. Paid for a month to use a remote Mac, but the pairing and debugging process does not get much better.

Develop inside a virtual macOS

I have been using this option with good results. I just run everything on the macOS VMware virtual machine. Visual Studio and Emulator got a little slow (my CPU is i5 and 8GB ram), but is acceptable to make some adjusts. Advantages: Avoid pairing, Xcode to edit some resources, publishing.

Install macOS on Windows PC

This is kind of upgraded of previous suggestion. Didn't tested yet, but the performance should be better than VMWare if it works. They call this Hackintosh and is possible if your hardware is compatible.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHardgrafView Question on Stackoverflow
Solution 1 - C#ebattulgaView Answer on Stackoverflow
Solution 2 - C#JasonView Answer on Stackoverflow
Solution 3 - C#Morteza SoleimaniView Answer on Stackoverflow
Solution 4 - C#VerthosaView Answer on Stackoverflow
Solution 5 - C#heronsanchesView Answer on Stackoverflow
Solution 6 - C#Mehdi SaghariView Answer on Stackoverflow
Solution 7 - C#Márcio Souza JúniorView Answer on Stackoverflow