We are starting to build out Windows Phone 7.1 (Mango) support for some apps using the Windows Phone 7.1 (Mango) Beta tools available on create.msdn.com. After installing the tools, I noticed that 7.0 projects (NoDo) were running in the 7.1 emulator which was not the ideal scenario for testing.
Since there are obviously no 7.1 devices in market yet, it didn’t make sense to test our 7.0 app on a 7.1 emulator since there are obviously API improvements in 7.1. Take for example the web browser control. With Windows Phone 7.1 (Mango) is the IE9 browser where in 7.0 (Nodo or RTM) IE9 is not available, so there will obviously be differences.
So how will you know if the Mango emulator is running, just take a look at the icon list and if you see a search button then it’s Mango.

To work around this you will have to follow some steps.
If you have not installed the Windows Phone 7.1 (Mango) Beta tools do the following
- Make a backup of %ProgramFiles%/Microsoft SDKs\Windows Phone\v7.0\Emulation directory. Primarily you will need the WM70C1.en-US.bin in the Image directory
- Install the Windows Phone 7.1 (Mango) Beta tools (you don’t need to uninstall the 7.0 tools)
- Rename WM70C1.en-US.bin to NODO_WM70C1.en-US.bin
- Copy NODO_WM70C1.en-US.bin to %ProgramFiles%/Microsoft SDKs\Windows Phone\v7.1\Emulation\Images
Now if you have installed the Windows Phone 7.1 (Mango) Beta tools you will somehow need to get a copy of the WM70C1.en-US.bin file. My recommendation would be to
- Uninstall the Mango Beta Tools
- Re-install the RTM tools (don’t forget all the updates)
- Then follow steps 1-4 above
PLEASE NOTE: I followed the initial steps 1-4 but I’m assuming the second part will work but I have not tested. Remember these are beta tools so do at your own risk!
If you have everything installed and running you will get the Mango ROM image running whenever you debug an application.
So how do we get NoDo image running?
- If the emulator is running shut it down
- Open up a command line window
- Type the following
"C:\Program Files (x86)\Microsoft XDE\1.0\xde.exe" "C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Emulation\Images\NODO_WM70c1.en-US.bin" /boardid 0 /vmid {906C7DEB-4F8E-4006-BC37-D25BC8313C0A} /language 1033

- Deploy your application from Visual Studio and VS will start debugging in the Emulator you just launched.
- To verify your are running NoDo, just go to the app list and if you don’t see a search button, you are good.

The key thing in the command line to note is the VMID parameter as this must be {906C7DEB-4F8E-4006-BC37-D25BC8313C0A} and the BOARDID must be 0.
Now you want to make sure you are doing this with a Target Windows Phone Version set to 7.0 (check your project properties).

I have not tried running this with a project targeted at 7.1 but I imagine things may ‘blow up’.
Please remember, this is a hack so try at your own risk. We need to do this to support our products and customers and accept the risk of messing up our dev machines. Also, don’t try to launch multiple emulators with the same VMID as it just won’t work. Remember, these are beta tools so this may or may not make it into RTM but most likely this scenario will not be supported.
Next step is to get Visual Studio to launch the command line above so I don’t have to manually launch the NoDo emulator image. That’s a task for another night! If you are reading this and you know how to make that happen, please leave your comments!