This page compiles resources on Windows application development to help you get started developing applications for Windows IoT Enterprise devices.
Developing applications for Windows IoT Enterprise devices is much like developing for Windows Client devices. The same applications built for Windows Client run on Windows IoT Enterprise without any modifications. The difference between developing applications for Windows IoT Enterprise and Windows Desktop is the extra consideration that should be taken for the hardware you deploy your application to, and any Windows IoT customization or lockdown policies applied to the device.
Set Up your Environment
Install Development Tools
To develop applications for Windows IoT, you need Visual Studio, the Windows SDK, and the Windows App SDK.
The preferred development tool of many Windows developers, Visual Studio lets you create projects for Windows, and many other platforms. It's a powerful IDE that can help you write, debug, and deploy your apps.
The Windows SDK is a development platform that lets you build UWP apps and Win32/desktop apps. It's designed around Windows APIs that are coupled to particular versions of the OS.
The Windows App SDK complements the Windows SDK by letting you build modern desktop apps that can be installed across Windows versions (down to Windows 10 1809).
Start Developing
Windows App Development
Learn everything about writing apps for Windows devices and explore sample application code.
Windows offers a wide range of options for building apps, from the programming language to the application framework. This article contains the information you need to get started building apps.
This topic compiles sample code for Windows applications that demonstrate specific tasks, features, and API usage patterns. These samples demonstrate features from Windows App SDK / WinUI 3, UWP / WinUI 2, .NET MAUI, and more.
Windows IoT App Development Considerations
Learn about Windows app development patterns and features commonly used for Windows IoT devices.
Background Applications are a special type of UWP application that has no UI but can still run code. These apps are commonly used on Windows IoT Core devices and devices without displays. Embedded Mode must be enabled in order for Background Applications to run.
Windows Services are background processes that that have no UI and are designed to perform specific tasks or functions. Windows Services are commonly used on Windows Client devices and can also be used on Windows IoT devices.
Describes the various ways you can deploy and debug UWP applications. The most common paradigm for IoT Devices is deploying to a Remote Machine, which requires extra steps to set up on the IoT device
Describes how you debug your application running on a Windows IoT device from your development machine.
Developing Applications for ARM64 Devices
Native vs. Emulated ARM64 Applications
A Native ARM64 Application refers to an application that is natively built for Arm64. An Emulated ARM64 Application refers to an application that is built for X86 or X64, but uses Windows' built in emulation technology to enable the application to run on ARM64 devices without modification.
Native ARM64 applications have several advantages compared to emulated ARM64 applications including:
Improved performance
Lower power consumption
Better compatibility
The decision to run a ARM64 application natively or emulated on an ARM64 device comes down to what is right for your specific device scenario. It's recommended to build your applications natively for ARM64 so you can take advantage of the benefits on native ARM64 applications. However, it's also perfectly fine to run the application using Windows' built in ARM64 emulation technology.
Which Windows IoT Enterprise Versions Support App Emulation?
Windows IoT Enterprise supports app emulation on ARM64 devices according to this table.
OS Version
Emulation support on ARM64 devices
Windows 10
X86
Windows 11
X86, X64
How to Use ARM64 Emulation Technology to Run Your App
To use Windows' built-in emulation technology to run an X86 or X64 application on your ARM64 device, simply deploy the X86 or X64 application to your ARM64 device and run it normally.
.NET Framework Support for ARM64
.NET Framework 4.8.1 added native support for Arm64 in Windows 11, which enabled developers to build an application natively for ARM64 and run it on an ARM64 device without using ARM64 emulation. This is supported on Windows 11 devices through native ARM64 support in .NET Framework Runtime 4.8.1.
Note
.NET Framework 4.8.1 runtime doesn't support native ARM64 applications on a Windows 10 device.
To run a native ARM64 .NET Framework 4.8.1 application on an ARM64 Windows 11 IoT Enterprise device, ensure the .NET Framework 4.8.1 Runtime is either installed on the device or packaged with the application.
More App Development Resources
Testing and Debugging
Use Visual Studio to debug your applications and run tests before release. Make sure to select the correct version of Visual Studio from the drop-down at the top of the table of contents pane.
Remote testing enables developers to connect Visual Studio 2022 to remote environments for running and debugging tests.
Deploying your Application
How to publish and share your app. Make sure to select the correct version of Visual Studio from the drop-down at the top of the table of contents pane, and the correct language on the right side above the article title.
Dev Home was introduced with Windows 11, and is a dashboard that provides quick access to the tools you need to develop apps for Windows. It also provides links to training and code samples.
A highly extensible editor, Visual Studio Code can be customized to support almost any kind of development you can think of. It's a great choice for writing apps for Windows, and other platforms.
Windows Terminal is a modern host application for the command-line shells you already love, like Command Prompt, PowerShell, and bash (via Windows Subsystem for Linux (WSL)). It provides a modern, tabbed interface, and supports themes and extensions.
In this module, you learn how to use the Windows Subsystem for Linux (WSL) with Visual Studio Code (VS Code). We explore the installation process and the basics of using WSL. Additionally, we install and utilize the Visual Studio Code WSL extension. Finally, we demonstrate how to debug and run Python code in VS Code within our WSL environment.
Build end-to-end solutions in Microsoft Azure to create Azure Functions, implement and manage web apps, develop solutions utilizing Azure storage, and more.