Naturally I wanted to use Visual Studio, as it’s the IDE I use all the time for .net development and WPF both in my day job and at home. Coupled with Resharper it’s what comes naturally for me as a developer. And this is key. Muscle keyboard memory is a strange thing. We want to use something that we don’t even have to think about. So this is where my adventures in Xamarin Forms began.
I currently only own a MacBook Pro and run Windows through Parallels. It’s not the newest MBP, with only 4GB Ram so it’s a bit of a demand on the poor thing. Fan usually kicks in when firing up windows (but hey we’re all used to that with windows right). So now I’ve installed Xamarin and it’s time to start.
Where better place than HelloWorld, of course. So I create a new Xamarin Forms solution, using Blank App (Xamarin.Forms Portable) and off we go. Now, I noticed that many of the XF examples crank the UI out in code. As a WPF developer this seems not only wrong but a little odd. Why do that, it’s not right. Ok, so sometimes it make sense to create some stuff in code (obviously with the help of a Behaviour), but generally as a rule, no way. Something is going on here.
With my new solution created I create my first Page\View. Up comes the Xaml editor and off we go. Oh no, what’s going on here? There’s no intellisense, nothing, not a single bit of IDE assistance anywhere. I might as well be using Notepad. A bit of googling reveals that there is currently no intellisense support of Xaml in the Xamarin Visual Studio Plugin at this time. No wonder the examples are done in code then. I think that $999 is way to expensive given that such features are not included.
Anyways, that aside I try to deploy my hello world app to all three platforms via their respective simulators. What a world of pain this turns out to be. First up, iOS. You have to have the Xamarin Build Host running on your mac for this to work from windows. This just did not work for me at all. Complaining about Build Host unable to connect. Turns out I’d recently installed OSX Yosemite and this broke the Build Host paring with Visual Studio. (This has since been fixed). Next, I try running it on an Android emulator. All my preinstalled Android emulators are broken as they failed to load. After much wasted time I discovered that Xamarin had just announced the Xamarin Android Player. So I installed this and to my relief it works. But my MBP is now running like a total dog and the fan is going ballistic. Lastly I try Window’s Phone. Now you’d think this would work right? It’s a no brainer. It’s windows after all. No, it complains that I don’t have enough Ram to run it. Ok, my MBP only has a woeful 4Gb Ram, but so what, surely this should run right. No matter what I tried this is the only simulator that I couldn’t not get to run at all.
So what about Xamarin Studio? I really wish I had started here in the first place. There’s no need for me to fire up windows via parallels VM. I can just run the osx version. First impressions are that it’s a really nice looking IDE. So, I do the same and create Hello World again. This gives me a solution minus the Window Phone project cos the OSX version doesn’t support it (don’t ask). I’m not really bothered about that just now anyway. Apparently I can run up Xamarin Studio in windows and I can add a Windows Phone project from there. I create a view/page just like I did in visual studio and would you believe it, I get intellisense in the Xaml editor. Wow this is great. Well, it’s not perfect. You pretty much get the same Xaml intellisense that you would in Visual Studio without the fancy resharper stuff like resolving xaml namespaces etc. But hey, this is great and it just works. Here’s some screenshots.
I then run up my iOS project and it just works and it’s fast. Next up Android. I’ve already install the OSX Xamarin Android Payer and Xamarin Studio fires this up no bother and it just works, without the fan kicking in. It seems to run just fine on my 4Gb Ram MBP. So far this is perfect. Well not quite. I really can’t get to grips with the shortcuts at all. That was easy to sort out. Just go to Preferences keybindings and change them to Visual Studio or Resharper settings, whichever you prefer. In the Windows version there’s a drop down box that lets you select Visual Studio Scheme, but alas in the OXS version you have to change them all manually. No big deal, took me about 20 mins. In addition Xamarin Studio has some really nice Code Analysis features which are very similar to those of resharper. In fact there are loads to tweaks you can make in the settings to make Xamarin Studio almost identical to that of Visual Studio. Here are some really useful links showing you how to do this:
With these in place I have to say that using Xamarin Studio is a complete no brainer. The other thing to bear in mind here is the cost; $25/month for Xamarin Indie vs $83 / month for the business edition which includes the Visual Studio plugin (which actually doesn’t work very well in my experience). I am still currently using the evaluation trial but I’ll be purchasing the Xamarin Indie version when my trial is up and sticking with Xamarin Studio until there is better Visual Studio support.
As an aside the Xamarin pricing page also includes a section entitled “Are you a startup or small business? Contact us”. So I did. They offered a 20% discount. I am still in negotiation to see how much they are prepared to reduce the price for individual developers like myself. I will keep you posted.