by Nick Landry (last updated on 9/22/2014)
Mobile development is full of exciting opportunities, but setting-up your development environment can sometimes be a challenge depending on what your current hardware is, and what mobile platform you want to target. I work with a lot of developers at hackathons, workshops and meetups, and helping developers get started with Windows Phone development is a part of my day to day.
The goal of this post is to be a one-stop shop for any developers getting started with Windows Phone development to help them prepare their development environment using either free tools or using their current Visual Studio setup. For most developers using a recent Windows computer, installing the Windows Phone developer tools will be a breeze accomplished through a one-step process. But for other developers using legacy hardware, a lot of questions arise as to whether or not their current machine is up to snuff to run the Windows Phone SDK. I’ll try to address most of these questions I’ve been getting over the last couple of years. If there are important questions I am missing, feel free to ask them in the comments below and I will do my best to amend them in this post.
How much are the Windows Phone Dev Tools?
Totally free! You can install a single package called Visual Studio Express 2013 with Update 3 for Windows completely for free and you will get the following all at once:
- Visual Studio 2013, the premier Integrated Development Environment (IDE)
- Windows Phone 8.1 SDK (to build apps for Windows smartphones)
- Windows 8.1 SDK (to build Windows Store apps for Windows tablets, laptops, hybrids & desktops)
To learn more about developing apps by using Visual Studio 2013, refer to the official documentation here.
I want to install the Windows Phone dev tools now. Where is the link?
Download the Windows Phone tools here. Remember to choose Visual Studio Express 2013 with Update 3 for Windows (NOT the version “for Windows Desktop”). Check out the requirements below first to make sure you have all you need.
What do I need for Windows Phone development?
The following lists the requirements to install the Windows Phone SDK:
- Operating System: Windows 8.1 (x64). To run the Windows Phone Emulator, you’ll need Windows 8.1 Pro.
- Processor: 1.6 GHz or faster
- Memory: Your machine should really have no less than 4GB of RAM, and I definitely would recommend 8GB or more if your machine allows it
- Storage: 11 GB of available hard disk space on a 5400 RPM hard drive. I highly recommend getting a fast hard drive (10K RPM) or a Solid State Drive (SSD)
- Video: DirectX 9-capable video card running at 1024 x 768 or higher display resolution
There is one exception to the 64-bit rule. You can use a Windows 8.1 32-bit (x86) development machine to build Windows Phone 81. (but not 8.0) apps if you do not intend to use the emulator and debug your apps exclusively using an external Windows Phone device connected over USB.
To learn more about the requirements for Windows Phone 8 development, refer to the official documentation here.
What about Windows Store apps for tablets, Surface & desktop?
That’s an easy one. All the instructions provided in this blog post automatically give you the dev tools you need to build Windows Store and Universal apps. Universal apps let you share over 90% of your code when building apps for the phone, tablets, hybrids, 2-in-1’s, notebooks, laptops and desktops (and Xbox too in the near future). Note that I am spending extra time in this blog post on the Windows Phone side of things due to the extra requirements of the Windows Phone emulator.
Why is Windows 8.1 required?
Simple, because the core operating system for Windows Phone 8.x is the same: it’s Windows 8. Whether you’re building an app for Windows Phone, for the Windows Store, or the new Universal Windows app model, the underlying runtime is WinRT (not .NET), and WinRT was introduced with Windows 8. The Windows Runtime is part of a reimagining of the developer experience for Windows. It’s the modern Windows API surface used to create new Windows Store apps on Windows 8.x.
Why is Windows 8.1 Pro required for the Windows Phone Emulator?
Windows 8.1 (x64) Professional edition or higher is required for the Windows Phone emulators since those emulators are actually Hyper-V Virtual Machines (VM) running the Windows Phone operating system. Hyper-V is a feature of Windows 8.1 Pro. From a hardware point of view, you’ll need a processor that supports Client Hyper-V and Second Level Address Translation (SLAT). If your computer is running on an Intel Core i3, i5 or i7 CPU, you should be fine as those will typically support SLAT.
Hyper-V enables fast hardware virtualization to accelerate virtual machines and provide maximum performance. If you want to see how slow an emulator can get without hardware virtualization, go try the emulators in Google’s Android SDK.
Note that while you may have Windows 8.1 Pro, it does not necessarily guarantee that Hyper-V will be installed. To be sure, follow these steps:
In Control Panel, click Programs, and then click Turn Windows features on or off.
In the Windows Features dialog box, click Hyper-V. The list of options expands.
In the expanded list of options, select at least the Hyper-V Platform check box, and then click OK.
For more information about the Windows Features dialog box, see Turn Windows Features On or Off.
To learn more about how to enable Hyper-V for the emulator for Windows Phone, refer to the official WP8 documentation here.
What is SLAT? How do I know if my computer supports SLAT?
As discussed above, the Windows Phone emulator requires Hyper-V, which in turns requires a processor that supports Client Hyper-V and Second Level Address Translation (SLAT). PCs that support SLAT are Intel-based processors that start with i (e.g., i3, i5, i7, i9) or any CPUs based on Nehalem, Westmere, Sandybridge, Ivy Bridge & Haswell micro-architectures. The AMD equivalents are supported too.
To determine if your machine supports SLAT, perform the following steps:
- If you have a hyphen/dash (“-”) next to EPT, then you should start looking for a new computer. I hear the Surface Pro 3 is really nice . You’re not entirely out of luck though, you can still use the tools to build Windows Phone apps, but you’ll have to use an external Windows Phone device to run & debug your apps. More on that below.
There are also scenarios where the hypervisor is not turned on by default and you have to enable it in your computer BIOS. If you’re running Windows in Bootcamp on a Mac, there are no BIOS settings you can edit. The only way to force the a Mac to turn on the hypervisor is to cold-boot into Mac OS X, and then perform a warm reboot/OS switch to Windows.
To learn more about how to enable BIOS settings and Hyper-V for the emulator for Windows Phone, refer to the official WP8 documentation here.
I don’t have Windows 8. Can I use Windows 7 instead?
No. Windows 8.1 is required for the reasons explained above. You can still use Visual Studio 2010 and Windows 7 to build Windows Phone 7.x with the Windows Phone 7.1 SDK. You’ll unfortunately miss out on a lot of the great features introduced in Windows Phone 8 in 2012, and Windows Phone 8.1 in 2014. These great features include In-App Purchasing, Background Tasks, Cortana & the Speech SDK, a new map control & geofencing, support for more screen resolutions, and hundreds of other essential features that Windows Phone users are now taking for granted.
A question I often get is “Why isn’t Microsoft releasing additional updates for Windows 7 to get the Windows App Store and all the bits required for Windows Store & phone development?” There is an easy answer to that. We already did: it’s called upgrading to Windows 8! Seriously, Windows 8 builds on Windows 7. Everything that was in Windows 7 is in Windows 8.x.
What do I install if I already have Visual Studio 2013?
If you already use Visual Studio 2013 Professional Edition or higher, you simply need to install Update 2 or higher to get support for Windows Phone 8.1 and Universal Windows app development. At the time of this writing, Update 3 for Visual Studio 2013 is already available, so you might as well install the latest update:
- Launch Visual Studio 2013
- In the Tools menu, select Extensions and Updates
- Expand the Updates branch in the tree of options on the left
- Select Product Updates
- Select Visual Studio 2013 Update 3 in the list of available updates and launch the installation
Alternatively, you can download and install the latest update package for Visual Studio 2013 here.
Can I still build Windows Phone 8 apps using the WP8.1 tools?
Yes! You can use Visual Studio 2013 Update 2 and above to build the following types of Windows Phone projects:
- Windows Phone 8.1 apps (i.e. WinRT)
- Universal Windows apps for Windows Phone 8.1 and Windows 8.1 (also WinRT)
- Windows Phone Silverlight 8.0 (i.e. WP apps based on the classic .NET architecture introduced with Windows Phone 7.x)
- Windows Phone Silverlight 8.1 (i.e. same as above, but with access to the new 8.1 APIs too)
Can I use Visual Studio 2010 or 2012 instead?
If you want to build Windows Phone 8.1 apps or Universal Windows apps, you’ll need Visual Studio 2013 Update 2 or above. You can install the Windows Phone 8 SDK on Visual Studio 2012 to build WP8 or WP7.x apps, and you can install the Windows Phone 7.1 SDK on Visual Studio 2010 to build Windows Phone 7.x apps.
The table below summarizes the various SDKs, Visual Studio versions, app targets supported and required development operating systems.
I use a Mac. Can I still do Windows Phone development?
Not out of the box, but there are ways to achieve this. Since I’m a cross-platform mobile developer, I use a MacBook Pro for a lot of my development work. You’ll essentially need to install Windows 8.1 on your Mac, and there are two main ways you can achieve this:
- Use the Boot Camp Assistant on your Mac to setup a secondary operating system partition on your Mac, and then install Windows 8.1 on that new partition. Boot Camp basically lets you create a dual-boot machine.
- The alternative is to use virtualization software like Parallels Desktop for Mac or VMware Fusion to setup Windows 8.1 as a virtual machine (VM) on your Mac. You’ll have to enable something called “Nested Virtualization” to run the Windows Phone emulator, which is itself a VM that therefore needs to run within another VM.
- The third option is actually a combination of the first two, and the one I use on my Mac. First, setup Boot Camp on your Mac, and then install Parallels or VMWare. The difference is that when you create your Windows VM, don’t create a new Virtual Hard Drive (VHD) and instead virtualize your Bootcamp partition. This gives you the ability to choose how you run Windows: natively (aka “on the metal”) using Bootcamp, or virtualized when co-habitation is required (e.g. for Xamarin development).
To learn more about Boot Camp, visit Apple’s Support site here.
I don’t have a Windows Phone. Is there an emulator?
Yes, all Windows Phone SDKs ship with their corresponding emulators. As discussed above, the Windows Phone emulator is a full image of the Windows Phone operating system running in a Hyper-V virtual machine. This level of emulation provides full fidelity for testing your apps when compared to a physical device, as opposed to device simulators (e.g. Apple’s iOS Simulator) which provide very little in terms of advanced compatibility with physical devices.
Read more about the Windows Phone 8 emulator here. The Windows Phone 8.1 emulator supports the same capabilities and more. You can download additional images for the emulator here.
How can I use my own Windows Phone to debug apps?
Windows Phone development can be done with entirely free tools. However, to use your own phone for app testing & debugging, you’ll have to register as a Windows Developer on the Windows DevCenter.
- You do not need a Windows Phone Developer account to download the SDK and start developing apps
- You do need a developer account to unlock a phone for development and to submit apps for testing and publication in the Windows Phone Store (formerly known as Windows Phone Marketplace)
To get a Developer Account:
Note that the registration now includes both the Windows Store and Windows Phone Developer registration in the same account! The $19 charge used to be a yearly fee but Microsoft recently announced that it is now a lifetime subscription, effectively making Windows Phone the cheapest modern device app store you can publish to.
To learn more about developer licenses for store apps (i.e. Windows & Windows Phone), refer to the official documentation here.
Once you are registered as a Windows developer, follow these steps to register your Windows Phone device for development.
How can I get a cheap Windows Phone for development?
I’m glad you asked. The Windows Phone ecosystem has a wide range of devices for all budgets. We have flagship devices like the Lumia 1520 or the Lumia ICON (aka Lumia 930 worldwide). We also have very affordable yet full-featured phones that you can buy off-contract (i.e. without any carrier subsidized discount or two-year contract) for less than $100 USD. Here are some options:
Note that these phones either ship out of the box with the latest Windows Phone 8.1 software, or with Windows Phone 8. All these phones are upgradeable to Windows Phone 8.1 with all the new features like Cortana, Action Center, Universal Apps, folders, geofencing, triggered tasks, and so on.
Next Steps: Learning Resources
Congratulations! You should now have a working development environment to built Windows Phone apps and Universal Windows apps. In terms of resources to get started, my whole blog is dedicated to helping mobile developers across the board, but if you’re looking for a short list of resources to jumpstart your learning, start digging in the following:
If you have any questions or issues regarding your setup, feel free to ask me questions in the comments section below, or you can ping me on Twitter at @ActiveNick. if there are common questions or issues that I have not addressed here, feel free to let me know what those are and I’ll append them to this post.
Good luck with your apps, and make sure to let me know when you publish new apps in the store. I always love promoting the work of our community.