A common question asked in online support forums is which version of Microsoft development tools are required for a device powered by a particular version of Windows Mobile. With the pace technology is changing, there are numerous Microsoft products which can be utilised to develop mobile applications.
If you are developing in native code (C or C++) you have a number of choices. Back in the early days (before Pocket PC or Windows Mobile), development was achieved via an extension to the desktop version of Visual Studio 6.0. This extension was called the Microsoft Windows CE Toolkit for Visual C++ 6.0.
The first Microsoft development environment targeted specifically for mobile developers was called Embedded Visual C v3 (EVC3). This IDE was specifically designed for developers working on Windows CE and Pocket PC devices. The functionality and UI was very similar to Visual Studio 6.0, but was slightly extended to support development against multiple device types and deployment/debugging on actual devices. Embedded Visual C version 3, via the installation of additional SDKs supported producing applications for Pocket PC 2000 and 2002 devices as well as older Handheld PC (HPC) and Palm PC platforms.
The next upgrade was to Embedded Visual C v4 (EVC4) which was released in 2003, and only supports Windows Mobile 2003 devices. This is not to say that applications developed with EVC3 would not run on Windows Mobile 2003 devices, the Windows Mobile operating system is highly backwards compatible, meaning that applications developed for previous versions of the operating system will in most cases still run on newer versions of the operating system unmodified.
However developing applications for newer versions of the operating system using older tools which don’t explicitly support them has two main problems.
- Lack of debugging and deployment support – you can compile applications which will run on the new operating system version, but the IDE will not be able to automatically deploy your application to a device, and you will not be able to debug your application running on a real device.
- Lack of access to new APIs and features – For example Windows Mobile 2003 SE introduced dynamic screen orientation support (toggling between landscape and portrait), but if you use EVC3 and utilise the Pocket PC 2002 SDK you will not have easy access to the APIs which support this, since the Pocket PC 2002 header and library files will not include the information required to use them.
EVC3 and EVC4 are very old tools, which are reasonably unsupported by Microsoft at this stage. EVC3 is effectively unsupported and EVC4 is very close to being near the end of it’s mainstream support life-cycle (see Microsoft Support Lifecycle for Development Tools page for further details). They are fairly non functional under Windows Vista for instance, with Microsoft’s recommended practice being to use the tools within a Virtual Machine running a copy of Windows XP, which has its own problems.
The replacement for Embedded Visual C has been Visual Studio 2005. Visual Studio 2005 is the first version of Visual Studio .NET which has included support for C and C++ development for smart devices, which is Microsoft’s current term for PDAs and embedded devices running Windows CE. While EVC3 and EVC4 were available as free downloads, Smart Device development is not available in the free versions of Visual Studio (such as Visual Studio 2005 Express), meaning developers must purchase a copy of Visual Studio 2005 Standard or higher to develop for Mobile devices (see Microsofts’s Product Feature Comparision page for further details on the various SKUs of Visual Studio 2005).
Out of the box Visual Studio 2005 only supports developing applications for Windows Mobile 2003 devices. However additional SDK downloads enable you to develop applications targeting the additional features present in the Windows Mobile 5.0 and Windows Mobile 6 releases of the operating system, with full debugging support etc.
In summary for native development you are best to
- use EVC3 for Pocket PC 2000, 2002 (and older)
- use EVC4 for WM 2003
- use VS2005 for WM2003, WM5.0, WM6
Visual Studio .NET 2002 saw the start of Compect Framework support within Visual Studio. Support was included via an additional download which was called the Smart Device Extensions (SDE) which was only available as a beta. This development environment supported development for Pocket PC 2002 devices which utilised Compact Framework version 1.0.
Visual Studio .NET 2003 was the first version of Visual Studio .NET to officially support the Compact Framework, having the Smart Device Extensions functonality included in the core product. Although it was functional it was not tightly intergrated, for example the GUIs designed in the form designer had little resemblance to the look and feel of the controls used on the actual device.
Visual Studio 2005 introduced a number of improvements for managed developers, as well as a significantly improved forms designer which had the same look and feel as actual devices, it also included additional support for Compact Framework version 2.0, as well as the existing support for version 1.0.
Visual Studio 2008 will support Compact Framework v2.0 and Compact Framework v3.5 which will be released in the same timeframe. For those wondering, there will be no version 3.0 of the Compact Framework. The Compact Framework team decided to skip version 3.0 in order to keep “in sync” with the versioning of the desktop variant of the .NET framework which has already had a version 3.0 release.
In summary for managed development you are best to
- use VS2005 for CF1.0 and CF2.0
- use VS2008 for CF2.0 and CF3.5 (when it becomes available)
Most development tools support atleast two versions of the Windows Mobile operating system. The latest version and the previous one. As new versions of the Windows Mobile devices become available your applications should run on the devices, but you will not be able to debug your applications via the IDE. You will typically need to upgrade to the latest version of Visual Studio for this to function.
The Windows Mobile Team Blog has a posting which manages to condense the information I have outlined here into a neat looking table in a posting titled “Windows Mobile Tool Support Matrix“.