O objetivo deste artigo é promover uma compreensão comum da experiência de desenvolvimento Windows e da direção do produto.
Introdução
O que devo usar para criar aplicativos Windows?
Para o desenvolvimento de aplicativos da área de trabalho do Windows, recomendamos o WinUI 3 e o SDK de Aplicativos Windows. O WinUI contém controles e estilos modernos para criar aplicativos do Windows que aproveitam os recursos mais recentes do Windows 11 e funcionam no nível inferior ao Windows 10, versão 1809.
Outras opções podem ser mais apropriadas dependendo do que você está criando e como:
- Se o SDK de Aplicativo do Windows / WinUI 3 não atender às suas necessidades, o WPF talvez atenda.
- Se o seu foco for multiplataforma: React Native e .NET MAUI permitem criar aplicativos multiplataforma. O .NET MAUI é uma ótima opção para desenvolvedores de C#. O React Native será familiar para desenvolvedores de JavaScript/TypeScript.
- Se você for um desenvolvedor Web: use o WebView2 como um host de aplicativo. Ele permite usar a tecnologia Web para criar aplicativos da área de trabalho com acesso ao SDK do Windows e a APIs do SDK do Aplicativo Windows. Você também pode usar o React Native para Windows.
- Se você for um desenvolvedor do C++: para aplicativos da área de trabalho, o SDK do Aplicativo Windows e a WinUI 3 são ótimas opções. Se você estiver criando um jogo, considere usar o DirectX.
- Se você for um desenvolvedor do Rust: confira Rust para Windows.
Há outras tecnologias de desenvolvimento que podem ser mais apropriadas dependendo de suas necessidades e preferências tecnológicas. Consulte Visão geral das opções de estrutura.
Onde posso encontrar uma comparação simples das tecnologias de desenvolvimento Windows?
SDK do Aplicativo Windows/WinUI 3
O que é o SDK do Aplicativo Windows?
O SDK do Aplicativo Windows é uma plataforma de desenvolvimento de aplicativos do Windows que permite criar aplicativos de área de trabalho bonitos, modernos e compatíveis com versões anteriores (até Windows 10 1809). O WinUI 3 é a estrutura de interface do usuário que é fornecida com SDK do Aplicativo Windows.
Qual é a diferença entre o SDK do Aplicativo Windows e o SDK do Windows?
Ambos são SDKs (kits de desenvolvimento de software) que permitem criar aplicativos Windows.
O SDK do Aplicativo Windows é uma nova plataforma de desenvolvimento que permite criar aplicativos de área de trabalho modernos que podem ser instalados em versões Windows (até Windows 10 1809). Ao usar o SDK do Aplicativo Windows para criar um aplicativo, você terá acesso aos recursos mais recentes da plataforma de desenvolvimento do Windows. O SDK do Aplicativo Windows inclui a WinUI 3.
O SDK do Windows é uma plataforma de desenvolvimento que permite criar aplicativos UWP e aplicativos Win32/área de trabalho. Ele foi projetado com base em APIs Windows acopladas a versões específicas do sistema operacional.
O SDK do Aplicativo Windows não substitui o SDK do Windows. Em vez disso, o SDK do Aplicativo Windows é um complemento ao SDK do Windows. Ele oferece uma abstração conveniente desacoplada do sistema operacional em torno do catálogo avançado de APIs do sistema operacional Windows que você já pode acessar usando o SDK do Windows. Ao criar aplicativos com SDK do Aplicativo Windows, você pode acabar usando algumas APIs do SDK do Windows, dependendo da funcionalidade necessária. Com o tempo, mais funcionalidade do SDK do Windows serão oferecidas no SDK do Aplicativo Windows.
Posso usar o SDK do Aplicativo Windows/WinUI 3 no meu aplicativo do Windows existente?
Observe que a WinUI 3 (uma estrutura de interface do usuário) é fornecida com o SDK do Aplicativo Windows (uma estrutura de desenvolvimento de plataforma Windows).
Em geral, você não pode usar a WinUI 3, a menos que esteja pronto para migrar totalmente sua estrutura de interface do usuário. Estamos trabalhando em um recurso chamado ilhas XAML que permite hospedar conteúdo do WinUI 3 em outras estruturas de interface do usuário (WPF, Win32).
Você deve conseguir usar elementos do SDK do Aplicativo Windows em qualquer aplicativo da área de trabalho/Win32, dependendo de como seu aplicativo foi criado. O SDK do Aplicativo Windows/WinUI 3 não oferece suporte para aplicativos UWP.
Isso significa que os aplicativos WPF/MFC/WinForms podem usar APIs do SDK do Aplicativo Windows não relacionadas à WinUI 3. Exemplos dessas APIs incluem Ciclo de Vida do Aplicativo, Janelas e Notificações do Sistema.
Preciso usar o Visual Studio para criar aplicativos WinUI 3?
É altamente recomendável usar Visual Studio 2022 versões 17.1 e superiores para desenvolver aplicativos SDK do Aplicativo Windows/WinUI 3. Usar a versão mais recente do Visual Studio dará acesso a recursos avançados de desenvolvimento, como Recarga Dinâmica.
Talvez você consiga usar outros IDEs e fluxos de trabalho de desenvolvimento, mas o Visual Studio atualmente é o único IDE com suporte oficial para o SDK do Aplicativo Windows / WinUI 3. Observe que o MSBuild é necessário para compilar projetos que usam XAML ou SDK do Aplicativo Windows / WinUI 3.
Quando eu compilo um aplicativo usando o SDK do Aplicativo Windows/WinUI 3, estou criando um "aplicativo WinUI 3"?
Sim – "Aplicativo WinUI 3" é o termo que recomendamos que você use.
Posso atualizar incrementalmente meu aplicativo WinUI 2 para WinUI 3 substituindo de modo gradual os componentes do WinUI 2 por componentes do WinUI 3?
Não. O SDK do Aplicativo Windows não pode ser usado em aplicativos UWP e o WinUI 2 não pode ser combinado à WinUI 3. Confira Migrar da UWP para o SDK do Aplicativo Windows.
Qual é a dificuldade de migrar aplicativos UWP para o SDK do Aplicativo Windows/WinUI 3?
A migração de componentes da interface do usuário costuma ser simples (para C# e C++/WinRT). Caso contrário, o custo de migração da UWP para o SDK do Aplicativo Windows/WinUI 3 dependerá principalmente de três fatores:
- Personalização do MSBuild e do arquivo de projeto: a migração do projeto pode exigir um nível significativo de esforço, dependendo do uso de recursos avançados do MSBuild.
- Migração da API do .NET: Se o aplicativo UWP depender do .NET, você precisará atualizar para o .NET 6. Na maioria dos casos, a adoção do .NET 6 é direta.
- Bibliotecas de componentes da interface do usuário: se você usa bibliotecas de componentes da interface do usuário, será necessário obter as novas versões delas direcionadas à WinUI 3.
- Se o código-fonte da UWP for escrito no C++/CX agora substituído, algumas portas de código-fonte estarão envolvidas. Confira Migrar do C++/CX para o C++/WinRT.
Confira Migrar da UWP para o SDK do Aplicativo Windows para obter mais informações sobre a migração da UWP.
Se eu tiver um aplicativo UWP na Store, poderei publicar um novo aplicativo WinUI 3 empacotado usando os mesmos identificadores?
Sim, os aplicativos atualizados podem ser publicados sem atualizar a identidade do aplicativo. Os usuários que tiverem a versão antiga serão atualizados para a versão nova. Essa diretriz se aplica apenas a aplicativos da área de trabalho. Os aplicativos Xbox, HoloLens e Surface Hub não podem migrar para a WinUI 3.
Como faço para empacotar/distribuir meu aplicativo WinUI 3?
Confira Visão geral da implantação.
Onde posso encontrar diretrizes de migração do SDK do Aplicativo Windows?
Preciso usar a marcação XAML se quiser usar a WinUI 3?
Não. Os controles de interface do usuário podem ser criados no código. Porém, há muitos benefícios em representar sua interface do usuário da WinUI 3 na forma de marcação XAML declarativa, como a experiência aprimorada do desenvolvedor.
Se você estiver migrando da UWP para o WinUI 3, provavelmente poderá reutilizar grande parte da marcação XAML e do código relacionado à interface do usuário (mas precisará atualizar parte da sintaxe). Se você estiver migrando da WPF para a WinUI 3, poderá reutilizar muitos dos conceitos, mas o conjunto de controle e as APIs serão diferentes.
O Visual Studio tem uma superfície de design/designer de GUI para WinUI 3?
Não. Reconhecemos que essa é uma lacuna na experiência de desenvolvedor da WinUI 3. Ferramentas como Recarga Dinâmica de XAML podem ajudar em muitos cenários.
O SDK do Aplicativo Windows inclui a WinUI 3?
Sim. A WinUI 3 é enviada como parte do SDK do Aplicativo Windows.
O SDK do Aplicativo Windows inclui a WinUI 2?
Não. A WinUI 2 faz parte da plataforma UWP.
A WinUI 2 e a WinUI 3 são criadas com base na mesma tecnologia?
Não exatamente. Embora a WinUI 3 tenha começado com a base de código da WinUI 2, elas são tecnologias distintas. A WinUI 2 e a WinUI 3 são estruturas de interface do usuário baseadas em XAML que funcionam em .NET e C++. Observe que a WinUI 2 e a WinUI 3 não são compatíveis entre si.
Posso usar a WinUI 3 sem usar o SDK do Aplicativo Windows?
Não. A WinUI 3 é enviada como parte do SDK do Aplicativo Windows.
Posso usar a WinUI 3 em um aplicativo não empacotado?
Sim. Todas as tecnologias no SDK do Aplicativo Windows funcionam em aplicativos não empacotados, incluindo a WinUI 3.
Qual é a diferença entre ilhas XAML e WinUI 3?
As Ilhas XAML permitem que você hospede controles WinUI modernos com a interface do usuário do Win32 de outras estruturas, como WinForms e WPF. Hoje, há suporte para ilhas XAML com a maioria dos controles XAML e WinUI 2 do sistema. Consulte Hospedar controles WinRT XAML em aplicativos da área de trabalho (Ilhas XAML) para mais informações. O suporte a ilhas XAML para controles WinUI 3 está disponível a partir do SDK do Aplicativo do Windows 1.4.
Se eu usar a WinUI 3, meu aplicativo parecerá moderno no Windows 11 e no Windows 10?
Sim, a interface do usuário do aplicativo herdará os princípios mais recentes de design da interface do usuário Fluent em todas as versões com suporte do Windows 11 e do Windows 10 até a versão 1809 em cenários empacotados e não empacotados.
Posso usar planos de fundo de Mica ou Acrílico em aplicativos criados com o SDK do Aplicativo Windows?
Sim. Consulte Aplicar materiais de Mica ou Acrílico em aplicativos de área de trabalho para Windows 11.
Onde posso encontrar exemplos da WinUI 3?
Consulte Exemplo e recursos. Alguns repositórios de destaque:
- Exemplos do WindowsAppSDK: demonstra como usar conjuntos específicos da API do SDK do Aplicativo Windows.
- Demonstrações da WinUI 3: contém demonstrações usadas durante as apresentações da WinUI 3 da Microsoft.
- Galeria de WinUI: mostra a WinUI 3 e o SDK do Aplicativo Windows. Você também pode obter a Galeria de WinUI na Microsoft Store.
UWP e WinUI 2
Os aplicativos UWP podem ser distribuídos fora do Microsoft Store?
Sim. Se o pacote MSIX for assinado, o certificado de assinatura deverá ser válido e confiável no dispositivo de destino.
Posso combinar controles de interface do usuário XAML UWP com controles de interface do usuário Win32, WPF ou WinForms?
Sim, ilhas XAML permitem que você faça isso. Saiba mais sobre ilhas XAML.
Desenvolvimento multiplataforma
Posso começar com a WinUI 3 e o SDK do Aplicativo e depois integrar o .NET MAUI se quiser focar cenários multiplataforma?
Não no momento. Embora os aplicativos .NET MAUI usem o SDK do Aplicativo Windows/WinUI 3 durante a execução no Windows, recomendamos começar com o .NET MAUI ou o React Native para Windows se você prever a necessidade de focar várias plataformas.
O que devo usar para criar aplicativos que funcionem no Windows e no Xbox?
Se o aplicativo precisar dar suporte para Xbox, HoloLens ou IoT, recomendamos usar a UWP. O SDK do Aplicativo Windows não dá suporte a essas plataformas. Para desenvolvimento de jogos, recomendamos usar o Microsoft Game Development Kit.
O que devo usar para criar aplicativos que funcionem em Windows e Surface Hub?
Se você estiver focando Windows e Surface Hub, recomendamos usar a UWP.
Como faço para criar PWAs (aplicativos Web progressivos) que pareçam nativos do Windows?
Empacotamento, implantação e atualizações
Qual é a diferença entre aplicativos empacotados, desempacotados e empacotados com localização externa?
Para definições de aplicativos que são empacotados, descompactados e empacotados com localização externa, consulte a Visão geral da implantação. Esse tópico também explica as vantagens e desvantagens de cada opção.
Meu aplicativo WinUI 3 será atualizado automaticamente para usuários finais?
Um aplicativo do SDK do Aplicativo Windows/WinUI 3 pode ser entregue por meio da Store, um arquivo .appinstaller ou em seu pacote msi ou setup.exe. A Store e o AppInstaller dão suporte a atualizações automáticas para usuários finais que têm a atualização automática habilitada, mas seu aplicativo MSI/setup.exe precisa ter um atualizador próprio.
Posso usar o SDK do Aplicativo Windows sem usar o MSBuild?
De modo geral, não. A WinUI 3 e o SDK do Aplicativo Windows exigem o MSBuild, assim, o Visual Studio é obrigatório para o desenvolvimento de aplicativos do SDK do Aplicativo Windows / WinUI 3. Embora seja tecnicamente possível criar aplicativos do SDK do Aplicativo Windows que não usam a WinUI 3 usando outras cadeias de ferramentas, não há suporte para isso.
Desempenho e otimização
O que posso fazer para que meu aplicativo do Windows seja ótimo para os usuários finais?
Confira Otimizar os aplicativos para Windows.
Compatibilidade
Meus usuários precisarão atualizar o Windows para usar meu aplicativo do SDK do Aplicativo Windows/WinUI 3?
Os usuários que tiverem Windows 10, versão 1809 e superiores, poderão instalar seus aplicativos WinUI 3/SDK do Aplicativo Windows sem atualizar o sistema operacional.
Posso direcionar o Arm64 com meu aplicativo WinUI 3?
Sim.
Preterimentos e migrações
A UWP/WinUI 2 foi preterida?
Não. A UWP e a WinUI 2 ainda têm suporte e receberão correções de bug, confiabilidade e segurança. No entanto, a maioria dos novos recursos e funcionalidades, incluindo o suporte para os runtimes do .NET mais recentes, só será adicionada ao SDK do Aplicativo Windows/WinUI 3.
Quando devo migrar um aplicativo UWP/WinUI 2 para a WinUI 3?
Os desenvolvedores da UWP não precisam se pressionados a migrar seus aplicativos para o SDK do Aplicativo Windows se estão satisfeitos com a UWP e seu conjunto de recursos. A melhor opção para alguns aplicativos pode ser nunca migrar. Para aplicativos que desejam se beneficiar dos investimentos mais recentes da plataforma Windows e do .NET da Microsoft, esses aplicativos devem considerar migrar para o SDK do Aplicativo Windows. Confira Migrar da UWP para o SDK do Aplicativo Windows.
Quando *não* devo migrar um aplicativo UWP + WinUI 2 para a WinUI 3?
É recomendável continuar usando a UWP se você está criando para Xbox, Surface Hub ou HoloLens.
A WPF foi preterida?
Não. A WPF ainda tem suporte e recebe algumas atualizações de recursos também.
O WinForms foi preterido?
Não. O WinForms ainda tem suporte e recebe algumas atualizações de recursos também.
O Windows Runtime (WinRT) foi preterido?
Não. O WinRT refere-se a uma ABI (interface binária de aplicativo) que fornece interoperabilidade entre várias linguagens. WinRT é a evolução do COM. O SDK do Aplicativo Windows fornece a maior parte de sua funcionalidade por meio de APIs do WinRT.
Notas de versão
Onde posso encontrar notas de versão para o SDK do Aplicativo Windows?
Confira as Notas de versão do canal estável e as Notas de versão do canal de visualização.