Hyper-V is a great platform for virtualization and luckily Windows 8 has inbuilt/integrated support for hyper-v technologies. Windows Phone 8 SDK uses hyper-v for emulator virtualization and it works pretty good with Visual Studio 2012. Hyper-V integrated to the Windows 8 is been called ‘Client Hyper-V’.
Client Hyper-V is the same virtualization technology previously available only in Windows Server®. A similar functionality in Windows 7 is called Windows XP Mode. Client Hyper-V enables you to run more than one 32-bit or 64-bit x86 operating system at the same time on the same host computer. But instead of working directly with the computer’s hardware, the operating systems run inside a virtual machine (VM). Hyper-V enables developers and IT professionals to easily maintain multiple test environments and provides a simple mechanism to quickly switch between these environments.
You can read more about it from MSDN Guide – Using Windows 8 Client Hyper-V.
The problem is – Client Hyper-V has some inconsistencies with old Windows Phone 7.x emulators. The new Windows Phone 7.8 emulators work fine, but with older Windows Phone 7.x emulators, you could experience the slow start-up/load of the emulator. It takes few minutes to launch in some systems, and in some high end multi core systems, it launches in moments.
You will experience this problem when you want to develop and test for old Windows Phone 7.x devices, you will have problem in launching emulators.
From my experience and searching on Google, the following thread will help me to understand that it is a known problem with Windows 8 – Hyper-V and Windows Phone 7.x emulators. If you turn off Hyper-V for a while, you can experience that Windows Phone 7.x emulators are launching instantly when you launch for debug/run.
So here is the dilemma scenario.
You want to develop an application that you want to test on both Windows Phone 7.x and Windows Phone 8.0 emulators.
OR
You want to develop and application targeting Windows Phone 7.x using Visual Studio 2010 in Windows 8.
I have a few steps to follow to toggle between the development environment, and depending on the system, it is time taking, or little annoying – but we have to deal with it.
So I have to disable Hyper-V when I have to work on Windows Phone 7.x emulator.
Disable Hyper-V Feature
Control panel -> Programs and Features -> Turn windows features on or off -> Uncheck Hyper-V feature.
Restart the machine.
NB: Enabling/Disabling Hyper-V will require you to restart to take effect.
But this is a time consuming process and every time you will have to On/Off feature and restart. What we could have as an option in Windows Boot itself – through which I can normally boot to Windows with Hyper-V or boot with Hyper-V disabled.
We can do that using hypervisorlaunchtype = off/on
boot flag.
An easy fix for this is to create a second boot entry for my system that starts Windows without starting the hypervisor. To do this, you need to open an administrative command prompt and run the following commands (follow the steps below):
1. bcdedit /copy {current} /d "Windows 8 – no hypervisor"
This copies your currently active boot entry (assuming that this is the one you want to copy or select the appropriate one – if you are on a multi-boot environment) and gives the new copy the name you mentioned above ‘Windows 8 – no hypervisor’.
This will display a message in command prompt that “The entry was successfully copied to {some guid_identifier}.”
2. bcdedit /set {guid_identifier} hypervisorlaunchtype off
guid_identifier
is the identifier for the new boot entry (copy from the output of a plain ‘bcdedit
’ command – we executed in step 1)}
Copy the {guid} from the command prompt window and run the above command appropriately replacing {guid_here} with {guid from your command window for the new boot entry}
Now you have an additional boot entry, you can login in to your Windows 8 with hyper-v disabled mode and when you are done with it – You can reboot and select your default boot option (which is with Hype-V enabled).
- When you want to work with Windows Phone 8.0 emulators, select default boot option from boot menu.
- When you want to work with Windows Phone 7.x emulators – select the newly created boot option from boot menu.
Hope that helps some of you – who worried with these kind of troubles with Windows Phone development.
Note: Some of you with kind of powerful systems will experience these kind of issues less. So this tip is for those who are in need.
The post Windows 8 Client Hyper-V and Windows Phone 7.x emulator slowdown appeared first on Nithin Mohan T K's Space.