Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here.

Application Development Overview (Devices) 

Visual Studio supports two approaches for developing applications for devices.

  • You can develop mobile Web applications that run on a Web server and are rendered in different formats on a wide range of browser-equipped mobile devices.

  • You can develop Windows CE- and Windows Mobile-based rich-client applications that run on the device itself. This latter approach is what we mean by application development for smart devices.

Smart Device Solutions and Windows CE

To better understand the relationship between Windows CE, Pocket PC, Smartphone, and Windows Mobile™ software, see the article Mobile Developer Center Editor's Note from the Microsoft Mobile Developer Center.

Version Compatibility

To identify which versions of tools and technologies work together in developing device applications, see Introduction to Development Tools for Windows Mobile-based Pocket PCs and Smartphones. In Visual Studio 2005 managed projects, all platforms target version 2.0 of the .NET Compact Framework unless otherwise noted. For example, in the New Project dialog box, smart device templates are marked with "(1.0)" if they target version 1.0 of the .NET Compact Framework.

Design Guidelines

How you design your device application determines how easily, quickly, and efficiently a user can complete tasks. By optimizing your application to leverage the capabilities of different devices, you can provide the best user experience by creating a more usable, consistent, responsive, and accessible application. For detailed design guidelines about specific interface features, see the software development kit (SDK) for your device.

Device Emulator

The Device Emulator is designed specifically for Visual Studio 2005 device projects. It runs applications compiled for the ARM instruction set and runs as a user-mode process. Visual Studio now provides a Direct Memory Access (DMA) transport to communicate with the emulator. Surpassing the traditional TCP/IP transport, the DMA transport is faster, does not rely on network connectivity or other external factors, and provides deterministic connection and disconnection.

Visual Studio 2005 includes emulator images for Pocket PC 2003 SE, Pocket PC 2003 SE Square, Pocket PC 2003 SE Square VGA, Pocket PC 2003 VGA, Smartphone 2003 SE, and Smartphone 2003 SE QVGA.

Click Help on the emulator menu bar to view the collection of Help topics supporting the emulator.

To open the emulator, click Tools, click Connect to Device, select the emulator you want to open, and then click Connect.


  The Device Emulators support Direct3D and DirectPlay libraries. However, the emulators do not support any form of hardware acceleration. Performance of Direct3D and DirectPlay applications running on the emulator will not accurately reflect the performance of applications running on actual hardware. Furthermore, actual hardware may or may not support hardware acceleration. You are strongly encouraged to test Direct3D and DirectPlay applications on actual shipping devices.


The remote connection aspect of device applications introduces additional security issues. For more information, see Security in Device Projects, Security in the .NET Compact Framework, and Security in Native and .NET Framework Code.

Porting Existing Solutions

Device vs. Desktop

You use the same Visual Studio environment that you use when you develop applications for the desktop, but some differences become apparent when you target devices. For example:

  • The Visual Studio environment provides additional tools for connecting to and debugging on a device.

  • Besides choosing a project type and template when you create a project, you must select a device on which to run and debug the application. The device can be either a physical device connected to the development computer, a networked device, or a device emulator running on the development computer.

  • The number and members of classes differ from what is available for developing desktop applications. In managed projects using the .NET Compact Framework, fewer classes are available for devices, and the complement of classes typically differs among platforms. The same is true for native projects, where only a subset of Windows APIs, MFC classes, or ATL components is available. You can determine which classes are available by viewing the documentation, by using IntelliSense, or by using the Visual Studio Object Browser while your project is active.

  • As with desktop applications, you can access native code by using platform invoke. The .NET Compact Framework provides limited support for COM interop. It does not support creating COM objects in managed code or interoperating with ActiveX controls.

  • Some language items can differ; for example, not all Visual Basic keywords used for desktop development are supported.

  • Some code snippets provided in Visual Studio documentation for desktop projects may generate build errors in device projects.

  • There are design considerations, such as the form factor of the device, power usage, memory constraints, and other details, that are not factors for desktop development.

Additional Resources

For more information, visit the Mobile Developer Center.

See Also

Community Additions

© 2015 Microsoft