For a couple of years I have been running my development environments completely virtualized – there are many benefits in being able to quickly change operating systems and toolsets for working in different environments. With advancements in virtualization technology my original gripes with running things virtualized have more or less entirely disappeared. Unfortunately my virtualization environment of choice Parallels 7 on OSX has failed me terribly, I blame Microsoft too for forcing me to use a high performance emulator… 😉
The Windows Phone 7 emulator is a virtual machine running a WinCE 7 x86 kernel with Silverlight, XNA and the OS services, apps and UI on top of that. What this means is that if you can get it running you have a really high performance Windows Phone running on your desktop (minus touch and gestures). Unfortunately it also means that the emulator wants access to hardware virtualization and advanced DirectX support. Have a look at the system requirements and you can see that it doesn’t come in light… 3Gb Ram (1.5Gb free), hardware assisted cpu virtualization, directx 10 or 11 with WDDM 1.1 and DDI 10 (which puts a bunch of requirements on the graphics card). While most developers will have a computer which will support this adding a virtualization layer between the Phone emulator and the host system pretty much messes this up – so while I have computer which easily passes the Windows Phone emulator’s requirements, I want to run it inside a virtual machine. No joy – the emulator gets stuck at “Windows Emulator is doing a complete OS boot…”, I let it run overnight and in the morning it was up and running but the graphics were distorted and the Parallels virtual machine’s performance was abysmal.
It seems Parallels, Virtual PC and Virtualbox are confirmed non-starters for Windows Phone development in a virtual environment. I found one person showing a screenshot of the Windows Phone emulator running inside VMWare Fusion – so that is my next step just got to install it and migrate my Parallels VM first. All this just to be able to run an html5 web page in a web browser using Phonegap on a fake mobile phone!