-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathwindows-developer-faq.yml
356 lines (316 loc) · 34.1 KB
/
windows-developer-faq.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
### YamlMime:FAQ
metadata:
description: The official Windows developer FAQ. Get answers to common questions about Windows application development and Windows App SDK.
title: Windows developer FAQ
ms.topic: faq
ms.date: 12/16/2024
ms.localizationpriority: medium
ms.collection: windows11
author: alvinashcraft
ms.author: aashcraft
audience: new-desktop-app-developers
content-type: faq
title: Windows developer FAQ
summary: |
This article is meant to promote a common understanding of the Windows development experience and product direction.
Today's Windows app development landscape offers a variety of frameworks and technologies to choose from. This FAQ provides guidance on how to decide which framework to use for your Windows app development projects. It covers the following topics:
- Getting started and the Windows app development landscape.
- Native Windows-only app development with WinUI, Windows Presentation Foundation (WPF), and Windows Forms (WinForms).
- The Windows Software Development Kit (SDK) and Windows App SDK.
- Targeting Windows as part of your cross-platform development strategy.
- Hybrid and web app development with .NET MAUI, Blazor, and ASP.NET Core.
- How to choose an approach while understanding Microsoft's investments.
sections:
- name: The Windows app development landscape
questions:
- question: Where can I find a straightforward overview of Windows development technologies?
answer: |
For a great review of today's options for Windows developers, watch the most recent [Windows Dev Chat](https://youtube.com/playlist?list=PLI_J2v67C23bxTffW4XewbUEAOfSVZkrk&si=uARk7gCetDMnrxkJ) episode, [Choosing your ideal dev platform](https://www.youtube.com/live/4PJBJ8GICjM?si=T1uu4Dm8UKdf6lGn), where they discuss WinUI, .NET MAUI, React Native, Blazor, and Progressive Web Apps (PWAs).
You can also refer to the [overview of app development options](./index.md) for Windows developers.
- question: Why is client app development still crucial for modern digital transformation in the era of cloud services?
answer: |
In the age of cloud services, client app development remains a critical component of modern digital transformation. For developers, building client applications is essential not just for reach but for delivering responsive, meaningful interactions on user devices.
Here's why client apps still matter:
- **Device Reach:** With over 1.5 billion Windows devices and more than 5 billion Android and iOS devices globally, client apps let you bring your applications directly to users on their devices of choice.
- **Gateway to Intelligent Services:** Client apps are often the first interaction users have with your services. They offer a rich, interactive interface that allows you to showcase intelligent features and differentiate your product from others.
- **Scalability with Cloud Integration:** A well-integrated client app can sync effortlessly with backend cloud services, enabling real-time data access and seamless scalability as your user base grows.
- **Enhanced Productivity and User Loyalty:** A thoughtfully designed app can enhance productivity and keep users engaged with your product or service over time.
- name: Native Windows-only app development
questions:
- question: What is the Windows App SDK?
answer: |
The Windows App SDK is a Windows application development platform that allows you to create beautiful, modern, backwards-compatible (down to Windows 10 1809) desktop apps. WinUI 3 is the UI framework that ships with Windows App SDK.
- question: What's the difference between the Windows App SDK and the Windows SDK?
answer: |
Both are software development kits (SDKs) that let you build Windows apps.
The **Windows App SDK** is a new development platform that lets you build modern desktop apps that can be installed across Windows versions (down to Windows 10 1809). When you use Windows App SDK to build an app, you'll have access to the latest Windows development platform features. The Windows App SDK includes WinUI 3.
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 doesn't replace the Windows SDK**. Instead, the Windows App SDK is a complement to the Windows SDK. It provides a convenient, OS-decoupled abstraction around the rich catalogue of Windows OS APIs that you can already access using the Windows SDK. When you build apps with Windows App SDK, you might end up using some Windows SDK APIs depending on the functionality that you need. Over time, more Windows SDK functionality will be lifted into the Windows App SDK.
- question: I'm building a new team to develop a Windows-only app. Why should I choose to develop with a native Windows framework like WinUI, WPF, or WinForms?
answer: |
Here are some reasons to choose a native Windows framework for your Windows-only app:
- **Performance:** Native Windows frameworks are optimized to leverage the full power of today's Windows hardware and provide fast and responsive user experiences.
- **Integration:** Windows ships with wide varieties of APIs to build sophisticated experiences only available on Windows. The native frameworks provide deep integration with these features and APIs.
- **Native user experience:** Native Windows frameworks provide a consistent user experience across Windows devices, ensuring that your app looks and works great on all Windows devices.
- **Offline support:** Native Windows frameworks provide support for offline scenarios, enabling your app to work even when the user is not connected to the internet.
- **Monetization:** Native Windows frameworks are actively maintained and supported by Microsoft, ensuring that you have access to the latest updates and features.
- question: Which framework should I use to leverage Microsoft's latest investments in Windows app development?
answer: |
If you're building a new Windows-only app, we recommend using WinUI. WinUI is the latest native UI framework for Windows app development and is designed to work across a wide range of Windows devices. WinUI provides a modern and flexible UI framework that enables you to create visually appealing and interactive Windows apps. WinUI is part of the Windows App SDK and is designed to work best with the latest versions of Windows.
- question: Can I use Windows App SDK / WinUI in my existing Windows app?
answer: |
Note that [WinUI](../winui/winui3/index.md) (a UI framework) ships with [Windows App SDK](../windows-app-sdk/index.md) (a Windows platform development framework).
Generally speaking, you can't use WinUI unless you're ready to migrate your UI framework entirely. We're working on a feature called [XAML islands](/windows/apps/windows-app-sdk/stable-channel#xaml-islands-no-longer-experimental) that lets you host WinUI content in other UI frameworks (WPF, Win32).
You should be able to use elements of the Windows App SDK in any desktop app, depending on how your existing app was built. UWP apps are not supported by Windows App SDK.
This means that **WPF/MFC/WinForms** apps can use Windows App SDK APIs that are not related to WinUI. Examples of such APIs include App Lifecycle, Windowing, and Toast Notifications.
See [Use the Windows App SDK in an existing project](/windows/apps/windows-app-sdk/use-windows-app-sdk-in-existing-project) for more information.
- question: Do I need to use Visual Studio to build WinUI apps?
answer: |
We strongly recommend using Visual Studio 2022 versions 17.10 and above to develop WinUI apps. Using the latest version of Visual Studio will give you access to rich development features like Hot Reload. The latest Visual Studio installers include a **WinUI application development** workload, making it easy to get started with WinUI development.
You may be able to use other IDEs and development workflows, but [Visual Studio](/visualstudio/windows/) is currently the only officially supported IDE for WinUI. Note that [MSBuild](/visualstudio/msbuild/msbuild) is required to compile projects that use XAML or WinUI.
- question: When I build an app using Windows App SDK and WinUI 3, am I building a "WinUI app"?
answer: |
Yes - "WinUI app” is the term that we recommend you use. WinUI 3 apps are generally referred to as "WinUI apps", as WinUI 2 is not a type of app but a set of components that can be used in UWP apps.
- question: Can I incrementally update my UWP app with WinUI 2 controls to WinUI 3 by gradually replacing WinUI 2 components with WinUI 3 components?
answer: |
No. Windows App SDK can't be used in UWP apps, and WinUI 2 can't be mixed with WinUI 3. See [Migrate from UWP to the Windows App SDK](../windows-app-sdk/migrate-to-windows-app-sdk/migrate-to-windows-app-sdk-ovw.md).
- question: How hard is it to migrate a UWP app to WinUI?
answer: |
Migrating UI components is generally straightforward (for C# and [C++/WinRT](/windows/uwp/cpp-and-winrt-apis/)). Otherwise, the cost of migrating from UWP to WinUI will depend primarily on these factors:
1. **Project file and MSBuild customization:** Migrating your project might require a significant level of effort, depending on whether you use advanced MSBuild features.
2. **.NET API migration:** If your UWP app relies on .NET, then you'll need to upgrade to .NET 6 or later. In most cases, adopting .NET 6 is straightfoward.
3. **UI component libraries:** If you use UI component libraries, then you'll need new versions of them that target WinUI 3.
4. If your UWP source code is written in the now-superseded C++/CX, then some source code porting will be involved. See [Move to C++/WinRT from C++/CX](/windows/uwp/cpp-and-winrt-apis/move-to-winrt-from-cx).
For more info about UWP migration, see [Migrate from UWP to the Windows App SDK](../windows-app-sdk/migrate-to-windows-app-sdk/migrate-to-windows-app-sdk-ovw.md).
- question: If I have an existing UWP app in the Store, can I publish a new packaged WinUI app using the same identifiers?
answer: |
Yes, upgraded apps can be published without having to update your application's identity. Users who have the old version will get updated to the new version. This guidance applies only to desktop apps. Xbox, HoloLens, and Surface Hub apps can't migrate to WinUI.
- question: How do I package/distribute my WinUI app?
answer: |
See [Deployment overview](../package-and-deploy/index.md).
- question: Where can I find Windows App SDK migration guidance?
answer: |
See [Migrate from UWP to the Windows App SDK](../windows-app-sdk/migrate-to-windows-app-sdk/migrate-to-windows-app-sdk-ovw.md).
- question: Do I need to use XAML markup if I want to use WinUI?
answer: |
No. UI controls can be created in code. But there are many benefits to representing your WinUI user interface in the form of declarative XAML markup, such as improved developer experience.
If you're migrating from UWP to WinUI, you'll probably be able to reuse a lot of your XAML markup and UI-related code (but you'll have to update some of the syntax).
If you're migrating from WPF to WinUI, you'll be able to reuse a lot of the concepts, but the control set and APIs will be different.
- question: Does Visual Studio have a design surface / UI designer for WinUI?
answer: |
Not yet. We recognize that this is a gap in the WinUI developer experience. Tools like [XAML Hot Reload](/visualstudio/xaml-tools/xaml-hot-reload) can help in many scenarios. [Work has started](https://github.com/microsoft/WindowsAppSDK/discussions/4710) on a Visual Studio UI designer for WinUI in Windows App SDK 1.7, but there isn't a timeline for the release of this feature yet.
- question: Does Windows App SDK include WinUI 3?
answer: |
Yes. WinUI 3 ships as a part of the Windows App SDK.
- question: Does Windows App SDK include WinUI 2?
answer: |
No. WinUI 2 is part of the UWP platform.
- question: Are WinUI 2 and WinUI 3 built on the same technology?
answer: |
Not quite. Although WinUI 3 started from the WinUI 2 codebase, they are distinct technologies. Both WinUI 2 and WinUI 3 are XAML-based UI frameworks that work across .NET and C++. Note that WinUI 2 and WinUI 3 are not compatible with each other.
- question: Can I use WinUI 3 without using Windows App SDK?
answer: |
No. WinUI 3 ships as part of the Windows App SDK.
- question: Can I use WinUI 3 in an unpackaged app?
answer: |
Yes. All technologies in the Windows App SDK work in unpackaged apps, including WinUI 3.
- question: What's the difference between XAML Islands and WinUI 3?
answer: |
XAML Islands allow you to host modern WinUI controls alongside existing Win32 UI from other frameworks, such as WinForms and WPF.
Today, XAML Islands are supported with _most_ system XAML and WinUI 2 controls. See [Host WinRT XAML controls in desktop apps (XAML Islands)](../desktop/modernize/xaml-islands/xaml-islands.md) for more information. XAML Islands support for WinUI 3 controls is available starting in [Windows App SDK 1.4](/windows/apps/windows-app-sdk/stable-channel#xaml-islands-no-longer-experimental).
- question: If I create a WinUI app, will it look modern on both Windows 11 and Windows 10?
answer: |
Yes, your app's UI will inherit the latest Fluent UI design principles on all supported versions of Windows 11 and Windows 10 down to version 1809 in both packaged and unpackaged scenarios.
- question: Can I use Mica or Acrylic backgrounds in apps built with Windows App SDK?
answer: |
Yes. See [Apply Mica or Acrylic materials in desktop apps for Windows 11](../windows-app-sdk/system-backdrop-controller.md).
- question: Where can I find WinUI samples?
answer: |
See [Sample and resources](./samples.md). Some notable repositories:
- [WindowsAppSDK-Samples](https://github.com/microsoft/WindowsAppSDK-Samples): Demonstrates how to use specific Windows App SDK API sets.
- [WinUI 3 Demos](https://github.com/microsoft/WinUI-3-Demos): Contains demos used during Microsoft's WinUI presentations.
- [WinUI Gallery](https://github.com/microsoft/WinUI-Gallery): Showcases WinUI and Windows App SDK. You can also get the [WinUI Gallery in the Microsoft Store](https://www.microsoft.com/store/productId/9P3JFPWWDZRC).
- question: If I have already invested heavily in WPF, should I continue to use WPF or should I consider migrating to WinUI?
answer: |
If you have already invested heavily in WPF, you can continue to use WPF for your existing apps. WPF is a mature and stable framework that is widely used by developers to build Windows desktop apps.
Consider leveraging the [.NET Upgrade Assistant](/dotnet/core/porting/upgrade-assistant-overview) to migrate your .NET Framework WPF apps to the latest .NET platform. The .NET Upgrade Assistant is a tool that helps you migrate your .NET Framework apps to the latest supported versions of .NET. The .NET Upgrade Assistant analyzes your existing codebase and provides guidance on how to update your code.
- question: If I build a new WPF app, will it look dated compared to other new Windows apps?
answer: |
When developing a WPF application with .NET 9 or later, you can ensure your app matches the sleek, modern look of Windows 11. The new Fluent theme for WPF introduces a contemporary Windows 11 aesthetic to WPF applications, complete with integrated Light/Dark mode and system accent color support. This update not only modernizes the appearance of your app but also enhances user engagement by providing a polished and cohesive user experience.
- question: My team is comfortable building WinForms apps, and it suits our needs. Should we consider migrating to WinUI or another framework?
answer: |
If your team is comfortable building WinForms apps and WindForms meets your needs, you can continue to use WinForms for your existing apps. WinForms is a mature and stable framework that is widely used by developers to build Windows desktop apps.
The WinForms team is investing across features and has an active community of contributors. Some current areas of investment include:
- Async support with common controls
- Dark mode
- Layout flexibility
- Desktop security features like clipboard access
- name: Cross-platform native development
questions:
- question: What are some reasons for building cross-platform, native apps that target Windows?
answer: |
If you're targeting users across multiple OS platforms, building cross-platform apps with .NET MAUI or React Native can provide several benefits:
- **Reach:** Building cross-platform apps allows you to reach a larger audience of users on different platforms.
- **Code reuse:** Building cross-platform apps allows you to reuse code across different platforms, reducing development time and costs. It can be prohibitively expensive to build separate apps for Windows, iOS, Android, macOS, etc.
- **Consistent user experience:** Building cross-platform apps allows you to provide a consistent user experience across different platforms, ensuring that your app looks and works great on all devices.
- **Integration:** Building cross-platform apps allows you to integrate with different platforms and services, enabling you to provide a more comprehensive user experience.
- question: Can I be confident that .NET MAUI apps will run well on Windows?
answer: |
When you build a [.NET MAUI app for Windows](/windows/apps/windows-dotnet-maui/), your output is a WinUI app. While developing, .NET MAUI provides a single .NET experience across all platforms, including Windows, but under the hood, it generates platform-specific code. This ensures that your .NET MAUI app runs well on each platform and provides a native user experience.
- question: How can .NET MAUI provide native device APIs across every platform?
answer: |
.NET MAUI provides a single .NET experience across all platforms, including Windows, iOS, Android, and macOS. .NET MAUI abstracts over 60 platform-specific APIs into a single, cross-platform API that you can use in your .NET MAUI app. These APIs cover access to storage, networking, device-specific sensors, and more. If needed, you can also access additional platform-specific APIs using dependency injection to abstract the code for each platform.
- question: Can I start with WinUI, and later integrate .NET MAUI if I eventually want to target cross-platform scenarios?
answer: |
Not at this time. Although .NET MAUI apps use WinUI when running on Windows, we recommend starting with .NET MAUI or React Native for Desktop if you anticipate the need to target multiple platforms.
- question: Our team has strong web front-end development skills. Should we consider using React Native for Desktop?
answer: |
If your team has strong web development skills, you may want to consider using React Native for Desktop. React Native for Desktop encompasses the React Native for [Windows](https://github.com/microsoft/react-native-windows) and [macOS](https://github.com/microsoft/react-native-macos) frameworks. The motto of React Native is "Learn once, write anywhere," which means that you can use your existing web development skills to build native Windows apps using React Native. [React Native for Desktop](https://microsoft.github.io/react-native-windows/) is an open-source project that enables you to build native Windows and macOS apps using React Native. React Native for Desktop provides a set of APIs that allow you to access desktop OS-specific features and capabilities in your React Native apps.
Your team can leverage their JavaScript, TypeScript, and React skills to build the UI layer, which is rendered directly to native primitives. This provides native app performance and access to the capabilities of the native platform.
Read more about getting started with React Native development for Windows in the [React Native for Desktop documentation](https://microsoft.github.io/react-native-windows/docs/getting-started).
- question: Are any other Windows devices supported by React Native for Desktop?
answer: |
React Native apps can be deployed to all devices supported by Windows 10 and higher including PCs, tablets, 2-in-1s, Xbox, and Mixed reality devices.
- question: What should I use if I want to build apps that work on Windows and Xbox?
answer: |
If your app needs to support Xbox, HoloLens, or IoT, we recommend using UWP. Windows App SDK doesn't support these platforms. For game development, we recommend using [Microsoft Game Development Kit](https://github.com/microsoft/GDK).
- question: What should I use if I want to build apps that work on Windows and Surface Hub?
answer: |
If you're targeting both Windows and Surface hub, we recommend using UWP.
- name: Hybrid and web development
questions:
- question: What are hybrid apps, and why should I consider building one?
answer: |
Hybrid apps blend the best of web and native app development. The core of the app is built using web technologies like HTML, CSS, and JavaScript, and then wrapped in a native container that allows the app to leverage certain native platform features and hardware. They can also be distributed through app stores.
The main advantage of hybrid apps is that they allow you to build a single app that can run on multiple native platforms and on the web, reducing development time and costs. Some examples of hybrid app development platforms answer:
- Electron for desktop apps
- Ionic for mobile apps
- .NET MAUI Blazor hybrid for cross-platform apps
- question: How do I build native-feeling progressive web apps (PWAs) on Windows?
answer: |
See [Web development on Windows](../../web/index.md) and [Overview of Progressive Web Apps](/microsoft-edge/progressive-web-apps-chromium/).
- question: What is a .NET MAUI Blazor hybrid app?
answer: |
With .NET MAUI, Blazor apps can also run natively on Windows, iOS, Android, and macOS. This means you can create hybrid client apps that combine Blazor and .NET MAUI components together into a single, native client app. This provides full access to the same native platform capabilities available to any other .NET MAUI apps.
To read more about how Blazor can hosted within a .NET MAUI app, see [ASP.NET Core Blazor Hybrid](/aspnet/core/blazor/hybrid/).
- question: Do the web components of a .NET MAUI hybrid app need to be created with Blazor?
answer: |
No, the web components of a .NET MAUI hybrid app do not need to be created with Blazor. Starting with .NET 9, .NET MAUI provides a HybridWebView control that allows you to host other JavaScript UIs in your native app.
This means you can take your Angular, React, Vue or other HTML & JavaScript web app and host it within your .NET MAUI app. The hybrid control provides interop between the C# and JavaScript layers so you can call JavaScript functions from C# and vice versa.
- question: Can any other native app types host Blazor hybrid components?
answer: Yes, WPF and WinForms apps can also host Blazor hybrid components. This allows you to add modern web UI components to your existing WPF and WinForms apps. Note, that this is not possible with WPF or WinForms apps built on .NET Framework.
- question: Does my entire app need to be a hybrid app, or can I mix and match native and hybrid components?
answer: |
You can mix and match native and hybrid components in your app. For example, you can build the core of your app using .NET MAUI components and then add hybrid components to provide additional functionality. This allows you to leverage the best of both worlds: the performance and capabilities of native components and the flexibility and cost savings of hybrid components.
- question: What are my choices for building .NET-based web apps that look great on modern browsers on Windows?
answer: |
Web apps have the broadest reach of any client app platform. If you want to create beautiful .NET web apps on Windows, you have several options:
- ASP.NET Core apps with Razor Pages
- ASP.NET Core MVC apps
- ASP.NET Core Blazor apps, with hosting model options including:
- Blazor WebAssembly apps
- Blazor Server apps
Note that the hosting model for Blazor can be configured at the component level now. So, you can have a Blazor WebAssembly component hosted in a Blazor Server app.
Read more about ASP.NET Core development options in the [ASP.NET Core documentation](/aspnet/core/introduction-to-aspnet-core).
- name: Choose an approach and understand Microsoft's investments
questions:
- question: There are so many framework options for building apps that target Windows! How do I decide?
answer: |
Windows is an open platform that supports many technologies. Here are some criteria that can help you decide which platform to use:
- Are you building Windows-first or cross platform?
- Do you have experience with .NET? JavaScript? Other languages?
- Do you need to access Windows-specific APIs?
- Which framework's capabilities best match your app's requirements?
- See [this table](/windows/apps/get-started/#app-development-framework-feature-comparison) for other decision factors.
When it comes to business apps, most teams want to choose based on existing skills and what the team is comfortable using.
- question: How do I choose the best development approach for my web app?
answer: |
Some things to consider when choosing a development approach for your web app include:
- Blazor is recommended for building front-end web apps with .NET. By using Blazor, you can now build your entire front-end and back-end with .NET, saving time and money. It is particularly well-suited for enterprise line-of-business apps on today's devices.
- JavaScript web apps still make sense if you want to leverage your team's existing skills or investments in JavaScript, or if you need to integrate with existing JavaScript libraries or frameworks.
- Existing apps that use older frameworks, like Web Forms, MVC, or Razor Pages, are still supported and can continue to be developed and maintained using those frameworks.
- question: Who is building apps with WinUI today?
answer: |
Many customers are building with WinUI today, including Adobe and Apple:
- [Adobe Fresco](https://apps.microsoft.com/detail/xp8c8r0zkzr27v), a free drawing and painting app for Windows.
- Apple created the [Apple Music](https://apps.microsoft.com/detail/9pfhdd62mxs1), [Apple TV](https://apps.microsoft.com/detail/9nm4t8b9jqz1), and [Apple Devices](https://apps.microsoft.com/detail/9np83lwlpz9k) apps with WinUI and the Windows App SDK.
Microsoft has also created several apps with WinUI, including the Windows 11 File Explorer and Photos apps.
- question: Who is building .NET MAUI apps today?
answer: |
Many customers are using .NET MAUI to build their cross-platform apps today, including Microsoft. For example, the [Microsoft Azure mobile app](https://azure.microsoft.com/get-started/azure-portal/mobile-app/) was built using .NET MAUI.
Find out who else is building apps with .NET MAUI on the [.NET customers showcase](https://dotnet.microsoft.com/platform/customers/maui) site.
- question: Who is building WPF apps today?
answer: Most of Microsoft Visual Studio's user interface is built with WPF. The [Visual Studio](https://visualstudio.microsoft.com/vs/) IDE is a great example of a complex, high-performance WPF app.
- question: Who is building Blazor apps today?
answer: |
GE Digital's [FlightPulse](https://customers.microsoft.com/story/816181-ge-aviation-manufacturing-azure) airline system puts sensor data and analytics into the hands of pilots to improve safety and efficiency. The backend configuration of everything the pilots see is all done with Blazor.
You can read more [Blazor customer stories](https://dotnet.microsoft.com/platform/customers/blazor) on the .NET site.
- name: UWP and WinUI 2
questions:
- question: Can UWP apps be distributed outside of the Microsoft Store?
answer: |
Yes. If your [MSIX](/windows/msix/) package is signed, the signing certificate must be valid and trusted on the target device.
- question: Can I mix UWP XAML UI controls with Win32, WPF, or WinForms UI controls?
answer: |
Yes - XAML Islands lets you do this. [Learn more about XAML Islands](../desktop/modernize/xaml-islands/xaml-islands.md).
- name: Packaging, deployment, and updates
questions:
- question: What's the difference between apps that are packaged, unpackaged, and packaged with external location?
answer: |
For definitions of apps that are packaged, unpackaged, and packaged with external location, see [Deployment overview](../package-and-deploy/index.md). That topic also explains the advantages and disadvantages of each option.
- question: Will my WinUI app automatically update for end-users?
answer: |
A WinUI app can be delivered through the Store, an .appinstaller file, or in your existing MSI or setup.exe package. The Store and the AppInstaller support automatic updates for end-users who have automatic updating enabled, but your MSI/setup.exe app needs to have its own updater.
- question: Can I use Windows App SDK without using MSBuild?
answer: |
Generally speaking, no. WinUI and Windows App SDK require [MSBuild](/visualstudio/msbuild/msbuild), which is why [Visual Studio](/visualstudio/windows/) is a prerequisite to developing with WinUI and Windows App SDK. While it's technically possible to build Windows App SDK apps that don't use WinUI using other toolchains, this isn't supported.
- name: Performance and optimization
questions:
- question: What can I do to make my Windows app feel great to end-users?
answer: |
See [Make apps great for Windows](./make-apps-great-for-windows.md).
- name: Compatibility
questions:
- question: Will my users ever have to update Windows to use my WinUI app?
answer: |
Users who have Windows 10, version 1809 and beyond will be able to install your WinUI apps without updating their OS.
- question: Can I target Arm64 with my WinUI app?
answer: |
Yes.
- name: Deprecations and migrations
questions:
- question: Are UWP / WinUI 2 deprecated?
answer: |
No. UWP and WinUI 2 are still supported and will receive bug, reliability, and security fixes. However, most new features and capabilities will only be added to WinUI 3.
> [!NOTE]
> UWP support for .NET 9 is available in preview. This preview support provides a path for UWP apps to modernize using the latest version of .NET.
>
> There are two main goals of the .NET 9 UWP support. First, it provides a better migration path for UWP developers who want to migrate to WinUI 3. Second, it enables developers to remove dependencies on .NET Native, so they can benefit from the latest .NET and C# features, no matter what their app model is.
>
> For more information, see the [Modernize your UWP app with preview UWP support for .NET 9 and Native AOT](https://devblogs.microsoft.com/ifdef-windows/preview-uwp-support-for-dotnet-9-native-aot/) blog post.
- question: When should I migrate a UWP / WinUI 2 app to WinUI 3?
answer: |
UWP developers should feel no pressure to migrate their apps to the WinUI 3, if they are happy with UWP and its feature set. The best choice for some apps may be to never migrate.
For apps that want to benefit from the latest Windows platform and .NET investments from Microsoft, these apps should consider moving to the Windows App SDK.
See [Migrate from UWP to the Windows App SDK](../windows-app-sdk/migrate-to-windows-app-sdk/migrate-to-windows-app-sdk-ovw.md)).
- question: When should I *not* migrate a UWP + WinUI 2 app to WinUI 3?
answer: |
We recommend continuing to use UWP if you're building for Xbox, Surface Hub, or HoloLens.
- question: Is WPF deprecated?
answer: |
No. WPF is still supported, recommended, and receives feature updates as well. See the [WPF roadmap on GitHub](https://github.com/dotnet/wpf/blob/main/roadmap.md).
- question: Is WinForms deprecated?
answer: |
No. WinForms is still supported and receives feature updates. See the [Windows Forms Roadmap on GitHub](https://github.com/dotnet/winforms/blob/main/docs/roadmap.md).
- question: Is the Windows Runtime (WinRT) deprecated?
answer: |
No. [WinRT](/windows/uwp/winrt-components) refers to an application binary interface (ABI) that lets you interop between multiple languages. WinRT is the evolution of COM. Windows App SDK provides most of its functionality through WinRT APIs.
- name: Release notes
questions:
- question: Where can I find release notes for Windows App SDK?
answer: |
See [Stable channel release notes](../windows-app-sdk/stable-channel.md) and [Preview channel release notes](../windows-app-sdk/preview-channel.md).
additionalContent: |
## Related content
- [Windows developer glossary](windows-developer-glossary.md)
- [Overview of app development options](./index.md)