Notas sobre a versão do canal estável para o SDK do Aplicativo Windows
O canal estável fornece versões do SDK do Aplicativo Windows com suporte para uso por aplicativos em ambientes de produção. Os aplicativos que usam a versão estável do SDK do Aplicativo Windows também podem ser publicados no Microsoft Store.
As seguintes versões do canal estável estão disponíveis no momento:
Caso queira atualizar um aplicativo existente de uma versão mais antiga do SDK do Aplicativo Windows para uma versão mais recente, consulte Atualizar projetos existentes para a versão mais recente do SDK do Aplicativo Windows.
Downloads para o SDK do Aplicativo Windows
Observação
As extensões do Visual Studio do aplicativo do Windows (VSIX) não são mais distribuídas como um download separado. Elas estão disponíveis no Visual Studio Marketplace dentro do Visual Studio.
Versão 1.5
Versão 1.5.1 (1.5.240311000)
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.5.
- Foi corrigido um problema em que aplicativos independentes falhavam ao compilar por não ser possível copiar "map.html".
- Foi corrigido um problema em que
MapControl
não inicializava devido à rejeição de tokens válidos. Para obter mais informações, confira o n.º 9324 do GitHub. - Foi corrigido um problema em que
MapControl
era carregado com um fundo azul. Para obter mais informações, confira o n.º 9377 do GitHub. - Foi corrigido um problema em que clicar na divisa de um
NavigationViewItem
não expandia nem recolhia corretamente em um único clique. Isso também fazia com que os menus fossem exibidos como em branco ao clicar na divisa no modoPaneDisplayMode="Top"
. Para obter mais informações, confira n.º 9423 e n.º 9426 do GitHub. - Foi corrigido um problema em que tocar em um
NavigationViewItem
com caneta ou toque impedia que o item respondesse a qualquer entrada futura. Para obter mais informações, confira o n.º 9429 do GitHub. - Foi corrigido um erro ao clicar em um item na área
NavigationView.PaneFooter
. Para obter mais informações, confira o n.º 9396 do GitHub. - Foi corrigido um problema em que ícones em menus às vezes eram exibidos no lugar errado. Para obter mais informações, confira o n.º 9409 do GitHub.
- Foi corrigido um problema em que o acrílico não aparecia nos menus até sair da janela e voltar. Para obter mais informações, confira o n.º 9406 do GitHub.
- Foi corrigida uma falha que poderia ocorrer durante a inicialização do
TextBox
/RichEditBox
. Para obter mais informações, confira o n.º 9216 do GitHub. - Foram corrigidas algumas exceções ruidosas que
NavigationView
gerava e capturava na destruição. - Foi corrigido um problema em que um gesto de "apertar para ampliar" às vezes aparecia como um movimento panorâmico ou toque devido ao disparo incorreto de uma mensagem
PointerCaptureLost
.
Versão 1.5
As seções a seguir descrevem recursos novos e atualizados e problemas conhecidos para a versão 1.5.
Em um aplicativo existente do SDK do Aplicativo Windows 1.4, é possível atualizar o pacote Nuget para 1.5.240227000 (confira a seção Atualizar um pacote em Instalar e gerenciar pacotes no Visual Studio usando o Gerenciador de Pacotes NuGet).
Para visualizar o runtime atualizado e o MSIX, confira Downloads para o SDK do Aplicativo Windows.
Atualizações de tempo de execução e desligamento de Ilhas XAML
Há uma distinção comportamental entre o WinAppSDK 1.4 e o WinAppSDK 1.5 para aplicativos baseados em Ilhas XAML quando a última janela XAML é fechada em qualquer thread.
- No WinAppSDK 1.4, o tempo de execução de XAML sempre sai do loop de eventos do thread quando a última janela XAML em um thread é fechada.
- No WinAppSDK 1.5:
- Se seu aplicativo for da área de trabalho WinUI, o comportamento padrão ainda será igual ao do WinAppSDK 1.4.
- Se você estiver usando XAML para a API DesktopWindowXamlSource ("Ilhas XAML"), o comportamento padrão será que o XAML não sairá automaticamente do loop de eventos do thread.
- Nos dois modos, é possível alterar esse comportamento definindo a propriedade
Application.DispatcherShutdownMode
.
Para saber mais, consulte a documentação da propriedade Application.DispatcherShutdownMode
quando disponível. Isso completa a proposta nº 8492 do GitHub.
Há uma distinção comportamental entre o WinAppSDK 1.4 e o WinAppSDK 1.5 para aplicativos baseados em Ilhas XAML na vida útil do tempo de execução de XAML:
- No WinAppSDK 1.4, o tempo de execução do XAML será desligado em um thread se todos os objetos
WindowsXamlManager
eDesktopWindowXamlSource
em certo thread forem fechados ou desligados, ou a execuçãoDispatcherQueue
nesse thread for encerrada (nesse caso, o tempo de execução do XAML será desligado durante o estágioDispatcherQueue.FrameworkShutdownStarting
). - No WinAppSDK 1.5, o tempo de execução do XAML é desligado em um thread somente quando o DispatcherQueue em execução nesse thread é desligado (o tempo de execução do Xaml sempre é desligado durante o estágio
DispatcherQueue.FrameworkShutdownStarting
).
Para obter mais informações, confira a documentação da classe WindowsXamlManager
quando disponível.
Há uma diferença de comportamento em WindowsXamlManager.InitializeForCurrentThread()
:
- No WinAppSDK 1.4,
WindowsXamlManager.InitializeForCurrentThread()
retorna uma instância exclusiva de um objetoWindowsXamlManager
com cada chamada. - No WinAppSDK 1.5,
WindowsXamlManager.InitializeForCurrentThread()
retorna uma instância existente se já existir uma no thread.Close/Dispose()
agora é ignorado.
Controle de mapas WinUI
O controle Maps
do WinUI já está disponível! Esse controle é das plataformas WebView2 e Azure Mapas, fornecendo os seguintes recursos:
- Movimento panorâmico e ampliação com os botões do mapa ou toque.
- Alterar o estilo do mapa para exibição de satélite, terreno ou rua.
- Adicionar de forma programática pinos interativos com ícones personalizáveis pelo desenvolvedor ao mapa.
- Personalização do desenvolvedor para onde o mapa está centrado na carga inicial.
- Controle para desenvolvedores sobre ocultar ou mostrar os botões para movimento panorâmico, ampliação e estilos de mapa.
Observação
Para usar o controle Maps
, você precisará de uma chave do Azure Mapas. Para criar a chave, consulte a página de documentação do Azure Mapas para criar um aplicativo Web.
O controle Maps
é totalmente novo e agradecemos seus comentários para avaliar a direção futura!
Novo controle SelectorBar
Na versão 1.5, adicionamos um novo controle SelectorBar
para permitir que os usuários alternem entre várias exibições de dados. Esse controle era anteriormente conhecido como "SegmentedControl" em nosso roteiro 1.5.
Rótulos nos comandos principais CommandBarFlyout
Os visuais de CommandBarFlyout
foram atualizados para exibir um rótulo de texto para os itens na área de comandos principais se a propriedade Label
tiver sido definida no AppBarButton
. Anteriormente, os comandos principais na área CommandBarFlyout
exibiam apenas um ícone, mas agora eles podem mostrar um ícone e um rótulo para melhorar a usabilidade.
Suporte a WebView2 para ambiente/opções personalizadas
O controle WebView2
do WinUI agora expõe a capacidade de personalizar o objeto subjacente CoreWebView2
com CoreWebView2Environment
e CoreWebView2ControllerOptions
personalizados. Isso permite que o autor do aplicativo especifique um caminho alternativo a partir do qual carregar o WebView2Runtime, optar por usar um UserDataFolder diferente ou definir opções como IsPrivateModeEnabled e ScriptLocale.
Suporte para .NET 8
Adicionamos suporte para o .NET 8 em uma versão de manutenção 1.4 recente, mas isso ainda manteve o aviso para o uso de RIDs específicos da plataforma. Em 1.5, concluímos esse trabalho para que o aviso não esteja mais presente.
Depuração e disponibilidade de origem aprimoradas
Agora injetamos informações do servidor de origem do Github para código no repositório microsoft-ui-xaml em nossos símbolos públicos, permitindo que os depuradores baixem automaticamente o código-fonte. Também fizemos outras correções e melhorias em nossos símbolos em todo o WinAppSDK para melhorar a experiência de depuração.
Funcionalidade aprimorada para depuração de ciclos de layout
Depurar ciclos de layout em um aplicativo do WinUI pode ser um desafio, portanto, na versão 1.5, o objeto DebugSettings
agora expõe opções para habilitar o registro em log aprimorado e pontos de interrupção para o processo de layout para facilitar a depuração e a correção de ciclos de layout no aplicativo.
Outros recursos novos do WinAppSDK
- Suporte adicionado para o modelo de implantação PublishSingleFile. Para saber mais sobre o PublishSingleFile, consulte a documentação de implantação de arquivo único.
- Melhorias adicionadas ao suporte ao leitor de tela, suporte a dimensionamento de texto e outros recursos de acessibilidade.
- Várias melhorias de estabilidade e desempenho com base em nossa lista de pendências de bugs do GitHub.
Novos recursos sendo lançados separadamente
Novas versões do modelo do WinAppSDK do Visual Studio para C# e C++ estão sendo lançadas por meio do Visual Studio Marketplace e aparecerão algumas semanas após o lançamento da versão 1.5. Com a nova versão, os modelos agora podem ser lançados independentemente das versões do WinAppSDK, permitindo que tenhamos muito mais flexibilidade na obtenção de atualizações para os clientes.
Outros recursos planejados anteriormente
Na versão 1.5, avançamos nos recursos a seguir que anunciamos em nosso roteiro, mas não os concluímos. Eles continuarão no período da versão 1.6.
- Janelas tabuladas
- Suporte a arrastar e soltar para WebView2
- Investigações sobre a exibição de tabela e controles de tinta
A iluminação dinâmica foi removida do roteiro por enquanto.
Problemas conhecidos
- Ao usar bibliotecas que contêm recursos como arquivos .xaml, você pode encontrar uma mensagem de erro em runtime indicando que esses recursos não podem ser encontrados. Nesse caso, pode ser necessário inserir
<ShouldComputeInputPris>true</ShouldComputeInputPris>
no arquivo de projeto para garantir que esses recursos sejam incluídos. - Clicar na divisa de um
NavigationViewItem
não mais expande ou recolhe corretamente em um único clique. Clicar duas vezes ainda funciona, assim como clicar em outro lugar noNavigationViewItem
.
Correções de bug
- Corrigido um problema em que
StackPanel
aplicava espaçamento a itens recolhidos. Para obter mais informações, confira o issue n.º 916 do GitHub. - Corrigidos problemas com controles de rolagem que não funcionavam mais depois de fechar outra janela do aplicativo. Para obter mais informações, consulte os problemas nº 9292 e nº 9355 do GitHub.
- Corrigida uma falha ao definir
DebugSettings.EnableFrameRateCounter
como true antes do primeiro quadro renderizado. Para obter mais informações, confira o issue n.º 2835 do GitHub. - Corrigido um possível erro de compilação para C++ em que alguns cabeçalhos não incluíam dependências necessárias. Observe que a alteração da ordem de
#include
pode afetar alguns aplicativos, como possivelmente causar um erro de compilação paraIInspectable
se o aplicativo estiver usando uma versão do C++/WinRT anterior a 2023. Para obter mais informações, confira o issue n.º 9014 do GitHub. - Corrigido um problema em que as associações
ElementName
não funcionavam dentro doItemsRepeater
DataTemplate
. Para obter mais informações, confira o issue n.º 560 do GitHub. - Corrigidas falhas ao executar um aplicativo no Visual Studio com a barra de ferramentas no aplicativo habilitada. O Visual Studio 17.8 Preview 2 ou posterior é necessário para obter totalmente as correções. Para obter mais informações, confira o issue n.º 8806 do GitHub.
- Corrigido um problema em que
AnnotatedScrollbar
às vezes podia falhar ao rolar rapidamente. - Corrigido um problema em que o texto do menu às vezes ficava truncado.
- Problema corrigido em que dicas de ensino não recebiam o devido foco. Para obter mais informações, confira o issue n.º 3257 do GitHub.
- Problema corrigido que travava o aplicativo ao definir o
TailVisibility
de umTeachingTip
como Recolhido na inicialização. Para saber mais, confira o problema n.º 8731 do GitHub. - Corrigido um problema com a forma como os arquivos PRI eram tratados ao usar bibliotecas. Para obter mais informações, confira o issue n.º 8857 do GitHub.
- Corrigido um problema da versão 1.5-experimental2 em que a DLL de projeção não era gerada. Para obter mais informações, confira o issue n.º 4152 do GitHub.
- Problema corrigido em que o botão de reticências no pop-up de formatação de texto do
RichEditBox
não exibia a lista de ações devidamente. Para obter mais informações, confira o issue n.º 9140 do GitHub. - Problema corrigido em que
ListView
não tratava adequadamente aceleradores de teclado. Para saber mais, confira o problema n.º 8063 do GitHub. - Problema corrigido de violação de acesso com o uso de
AccessKey
para fechar uma janela. Para obter mais informações, confira o issue n.º 8648 do GitHub. - Corrigida uma falha ao usar um
AccessKey
para fechar uma janela. Para obter mais informações, confira o issue n.º 9002 do GitHub. - Problema corrigido que afetava o alinhamento de texto em um
MenuFlyoutItem
em umMenuBar
. Para obter mais informações, confira o issue n.º 8755 do GitHub. - Problema corrigido em que o texto destacado não permanecia destacado ao clicar com o botão direito do mouse. Para obter mais informações, confira o issue n.º 1801 do GitHub.
- Problema corrigido que levava janelas inativas a travar o aplicativo quando fechado. Para obter mais informações, confira o issue n.º 8913 do GitHub.
- Problema corrigido que podia travar aplicativos ao rolar com o botão do meio do mouse e, logo depois, clicar com o botão esquerdo do mouse. Para obter mais informações, confira o issue n.º 9233 do GitHub.
- Corrigido um problema que provocava falha na inicialização dos aplicativos ao usar um
NavigationViewItem
personalizado. Para obter mais informações, confira o issue n.º 8814 do GitHub. - Corrigido um problema do
NavigationView
em que o botão de reticências gerava um erro incorretamente. Para obter mais informações, confira o issue n.º 8380 do GitHub. - Corrigido um problema em que um
SystemBackdrop
não era renderizado corretamente em um aplicativo com várias janelas. Para obter mais informações, confira o issue n.º 8423 do GitHub. - Corrigido um problema de duplicação ao inserir no início de um
ObservableCollection
. Para obter mais informações, confira o issue n.º 8370 do GitHub.
Versão 1.4
Versão 1.4.5 (1.4.240211001)
Esta é uma versão de manutenção do SDK do Aplicativo do Windows que inclui correções críticas de bugs para a versão 1.4.
- Corrigido um problema que podia travar aplicativos ao clicar em um botão do mouse enquanto rolava com a roda do mouse. Para obter mais informações, confira o issue n.º 9233 do GitHub.
- Corrigido um problema com ativos duplicados ao fazer referência a uma cadeia de pacotes NuGet. Para obter mais informações, confira o issue n.º 8857 do GitHub.
- Corrigidos vários
BreadcrumbBar
problemas, incluindo um vazamento de memória, uma falha quando o menu de reticências está vazio e o menu de reticências sendo restringido incorretamente dentro da janela. - Corrigida uma possível falha no desligamento ao liberar recursos gráficos.
Versão 1.4.4 (1.4.231219000)
Esta é uma versão de manutenção do SDK do Aplicativo do Windows que inclui correções críticas de bugs para a versão 1.4.
- Corrigido um issue de segurança de diagnóstico WinUI 3.
- Corrigido um issue de entrada em que a caixa de senha não mostrava o teclado virtual quando ativado via toque. Para obter mais informações, confira o issue n.º 8946 do GitHub.
- Corrigido um issue que fazia com que o tamanho do arquivo aumentasse
Microsoft.UI.Xaml.Controls.dll
inesperadamente. - Corrigido um issue
CommandBarFlyout
que poderia causar falhas ao definir o foco. - Suporte atualizado ao SDK do Aplicativo Windows para manipulação de ativos específicos do .NET 8 RID.
- Corrigido um issue que fazia com que algumas cadeias de permuta fossem posicionadas ou esticadas incorretamente.
Versão 1.4.3 (1.4.231115000)
Esta é uma versão de manutenção do SDK do Aplicativo do Windows que inclui correções críticas de bugs para a versão 1.4.
- Corrigido um problema em que um menu podia aparecer sem um plano de fundo por um curto período.
- Corrigida uma falha que pode ocorrer em cenários específicos de vários monitores.
- Corrigido um problema em que um menu de contexto podia aparecer fora da tela.
- Correção de um problema com estilos de janela e maximização do comportamento. Para obter mais informações, confira o issue n.º 8996 do GitHub.
- Corrigido um problema com ilhas onde o foco poderia ser inesperadamente capturado por outro controle.
- Corrigido um problema com a ordem de tabulação em
NavigationView
. - Corrigido um problema de renderização em que uma barra branca poderia ficar visível na parte superior da barra de título. Para obter mais informações, confira o issue n.º 8947 do GitHub.
- Várias correções de desempenho.
Versão 1.4.2 (1.4.231008000)
Esta é uma versão de manutenção do SDK do Aplicativo do Windows que inclui correções críticas de bugs para a versão 1.4.
- Correção de um problema de falha no explorer.exe causado por excesso de memória e alocação de objeto.
- Correção de um problema de interação da barra de título que impedia que o botão Voltar funcionasse corretamente.
- Correção de um problema que fazia com que um aviso fosse gerado para um arquivo de origem sendo incluído várias vezes.
- Correção de um problema que afeta o desempenho do menu de contexto.
- Correção de um problema de atalho .lnk que fazia com que o .exe de destino apontasse sempre para o mesmo local para pacotes na pasta WindowsApps.
- Correção de um problema de DWriteCore que afetava a renderização adequada do texto índico em determinadas fontes.
- Correção de um problema em um Modo de Exibição de Lista que impedia a navegação adequada do teclado de e para itens selecionados aninhados com Tab/Shift + Tab.
- Correção de um problema que interrompia a rolagem de itens do ComboBox por toque depois de expandir o ComboBox uma segunda vez. Para obter mais informações, confira o issue n.º 8831 do GitHub.
- Correção de um problema em que os pacotes do WinAppSDK não incluíam os recursos localizados do WinUI para alguns idiomas.
- Correção de uma inconsistência entre como o Explorador de Arquivos e o XAML exibem o idioma preferencial de um usuário.
- Correção de um detalhe no Explorador de Arquivos que fazia com que uma linha fina aparecesse na guia ativa.
- Correção de um problema em que alguns aceleradores de teclado fornecidos pela estrutura não estavam localizados corretamente. Para obter mais informações, confira o issue n.º 2023 do GitHub.
- Correção de um problema com controles RepeatButton que estavam rolando repetidamente quando tocados.
- Correção do instalador do WinAppSDK .exe para ter informações de versão de recurso adequadas.
Versão 1.4.1 (1.4.230913002)
Esta é uma versão de manutenção do SDK do Aplicativo do Windows que inclui correções críticas de bugs para a versão 1.4.
- Foram corrigidos os problemas de desempenho para melhorar o tempo até o primeiro quadro.
- Foi corrigido um problema em que os menus não respeitavam
RequestedTheme
. Por exemplo, era possível que esse problema resultasse em texto branco em uma tela de fundo branca. Para obter mais informações, confira o issue n.º 8756 do GitHub. - Foi corrigido um problema que fazia com que os planos de fundo de acrílico às vezes se tornassem totalmente transparentes em alguns menus.
- Foi corrigido um problema em que o XAML às vezes fazia com que o Windows repintasse desnecessariamente o papel de parede da área de trabalho.
- Corrigido o suporte de
TabNavigation = Local
eTabNavigation = Cycle
paraListView
eGridView
, que agora permite a navegação entre cabeçalhos e itens com TAB, além das teclas de seta. - Correção de algumas exceções barulhentas ao ignorar uma dica de ferramenta. Para obter mais informações, confira o issue n.º 8699 do GitHub.
Versão 1.4
As seções a seguir descrevem os recursos novos e atualizados e os problemas conhecidos da versão 1.4.
Em um aplicativo existente do SDK do Aplicativo Windows 1.3, é possível atualizar o pacote Nuget para 1.4.230822000 (confira a seção Atualizar um pacote em Instalar e gerenciar pacotes no Visual Studio usando o Gerenciador de Pacotes NuGet).
Para visualizar o runtime atualizado e o MSIX, confira Downloads para o SDK do Aplicativo Windows.
Barra de título personalizada + Fusão da barra de título do AppWindow
A barra de título personalizada do WinUI 3 utiliza a implementação da barra de título do AppWindow, juntamente com as APIs NonClientInputPointerSource sob o capô do SDK do Windows 1.4. Como resultado, ambas as implementações da barra de título agora se comportam da mesma forma, com os mesmos recursos e limitações. Isso é totalmente compatível com as versões anteriores em todos os casos com suporte; qualquer aplicativo com uma barra de título personalizada se comportará como antes. No entanto, agora é mais fácil para os desenvolvedores do WinUI 3, que podem ser novos nas barras de título personalizadas, entenderem e utilizarem-nas aproveitando esses novos recursos:
- Um cenário padrão melhor no qual o desenvolvedor não define um elemento de barra de título especificamente (substituindo a barra de título de fallback do WinUI 2)
- Regiões de arrasto distintas na barra de título, permitindo que você crie várias regiões de arrasto e coloque controles clicáveis em qualquer parte da área não cliente (área da barra de título)
- Regiões arrastáveis em todo o aplicativo que podem ser colocadas em qualquer lugar do aplicativo ou que devem fazer com que todo o aplicativo seja arrastável
- Melhor suporte para temas que substitui o tema baseado em recursos
- Como as regiões arrastáveis são transparentes, elas sempre seguem o tema do aplicativo
- Mais personalização: oculte os botões de mínimo, máximo e fechar; coloque ícones do sistema na barra de título; ou faça com que diferentes regiões atuem como botões de legenda que recebem respostas NCHITTEST
- Mais liberdade para o desenvolvedor, que permite misturar e combinar às APIs da barra de título do AppWindow, como utilizar APIs WinUI 3 de nível superior para a maioria dos cenários, mas com APIs do AppWindow misturadas para o controle de nível inferior.
Atualizações de widgets
Três novas interfaces foram adicionadas para os Provedores de Widget implementarem: IWidgetProvider2
, IWidgetProviderAnalytics
e IWidgetProviderErrors
. IWidgetProvider2
permite que os provedores respondam à ação Personalizar invocada pelo usuário, que é idêntica à que está disponível para Widgets primários. As interfaces IWidgetProviderAnalytics
e IWidgetProviderErrors
são utilizadas pelos provedores para coletar a telemetria de seus widgets; os eventos de falha e a análise sobre os widgets são comunicados aos respectivos provedores de widgets. As classes WidgetCustomizationRequestedArgs
, WidgetAnalyticsInfoReportedArgs
e WidgetErrorInfoReportedArgs
são utilizadas para comunicar informações relevantes para dar suporte a novas funcionalidades.
O XAML Islands não é mais experimental
As Ilhas XAML e a plataforma ContentIslands subjacente não são mais experimentais.
- Atualmente, as Ilhas XAML são testadas apenas para uso em aplicativos C++. Esta versão não inclui elementos de encapsulamento convenientes para uso no WPF ou no WinForms.
DesktopWindowXamlSource
e os tipos relacionados foram adicionados ao namespace Microsoft.UI.Xaml.Hosting para o XAML Islands.XamlRoot.ContentIslandEnvironment
foi adicionado para ajudar a acessar as informações da Ilha subjacentes de um elemento.- Vários tipos novos foram apresentados nos namespaces Microsoft.UI.Content e Microsoft.UI.Input como suporte subjacente para Ilhas XAML ou para utilizar essa funcionalidade ContentIslands sem XAML.
- Um novo
DragDropManager
(além dos tipos relacionados) foi adicionado ao namespace Microsoft.UI.Input.DragDrop para cenários de Ilhas.
ItemsView
Estamos introduzindo um novo controle de lista chamado ItemsView
e uma classe ItemContainer
concreta correspondente. ItemContainer
é um contêiner leve com estados de seleção internos e recursos visuais, que pode facilmente encapsular o conteúdo desejado e ser utilizado com ItemsView
para um cenário de controle de coleção.
- O novo controle
ItemsView
exibe uma coleção de dados. OItemsView
é semelhante aos controlesListView
eGridView
, mas é criado utilizando os componentesItemsRepeater
,ScrollView
,ItemContainer
eItemCollectionTransitionProvider
. Ele oferece a capacidade exclusiva de conectar implementações personalizadas deLayout
ouItemCollectionTransitionProvider
. Outra vantagem importante é a capacidade de alternar o layout em tempo real, preservando a seleção de itens. O controleScrollView
interno também oferece recursos que não estão disponíveis no controleListView
/GridView
doScrollViewer
, como a capacidade de controlar a animação durante rolagens programáticas.- Uma nova propriedade
ItemTransitionProvider
emItemsRepeater
(e no novo controleItemsView
) permite que você especifique um objetoItemCollectionTransitionProvider
para controlar as animações de transição nesse controle. Um métodoCreateDefaultItemTransitionProvider
também foi adicionado aLayout
, o que permite que um objeto de layout forneça uma transição de fallback para acompanhá-lo, se você não fornecer uma explicitamente no controleItemsView
. - Uma nova propriedade
IndexBasedLayoutOrientation
emLayout
em que a orientação do layout, se houver, dos itens é baseada em seu índice na coleção de origem. O valor padrão éIndexBasedLayoutOrientation.None
. Os layouts personalizados definem essa propriedade chamando o novo métodoSetIndexBasedLayoutOrientation
(protegido). - Uma nova propriedade
VisibleRect
emVirtualizingLayoutContext
obtém o retângulo da janela de visualização visível dentro doFrameworkElement
associado aoLayout
. O método virtualVirtualizingLayoutContext.VisibleRectCore
protegido pode ser substituído para fornecer o valor que será retornado da propriedadeVisibleRect
.
- Uma nova propriedade
- A nova classe
LinedFlowLayout
é normalmente utilizada para dispor os itens do controle de coleçãoItemsView
. É particularmente útil para exibir uma coleção de imagens. Ele faz isso dispondo-os da esquerda para a direita e de cima para baixo, em linhas de altura igual. As imagens preenchem uma linha horizontal e, em seguida, encapsulam em uma próxima linha. As imagens podem ser cortadas nas bordas esquerda e direita para caber em uma linha. Eles também podem ser expandidos horizontalmente e cortados nas bordas superior e inferior para preencher uma linha quando o modo de alongamento for empregado.
Novos recursos de todo o WinAppSDK
- Uma nova classe
ThemeSettings
que permite que os aplicativos Win32 WinRT detectem quando a configuração de Alto Contraste do sistema foi alterada, de modo semelhante à classe AccessibilitySettings da UWP. Consulte a especificação da API ThemeSettings no GitHub para obter mais informações. AccessKeyManager.EnterDisplayMode
é um novo método para exibir chaves de acesso para o elemento atualmente focado de uma raiz fornecida. As teclas de acesso estão no "modo de exibição" quando mostram uma dica de tecla para invocar um comando, como pressionar a tecla Alt no Paint para mostrar quais teclas correspondem a quais controles. Esse método permite a inserção programática no modo de exibição.Application.ResourceManagerRequested
fornece um mecanismo para fornecer umIResourceManager
diferente para resolver URIs de recursos em cenários nos quais oResourceManager
padrão não funciona. Para obter mais informações, confira a especificação Application.ResourceManagerRequested API no GitHub.- A versão do SDK do WebView2 foi atualizada da 1661.34 para 1823.32.
Popup/FlyoutBase.IsConstrainedToRootBounds = false
agora é suportado, permitindo que um pop-up/menu suspenso se estenda para fora dos limites da janela pai. Uma propriedadeSystemBackdrop
foi adicionada a esses tipos para dar suporte ao acrílico nesses popups sem restrições. Por padrão, os menus utilizam isso para ter o acrílico.Closed
,FrameworkClosed
eIsClosed
foram adicionados aDesktopAcrylicController
eMicaController
para melhorar o tratamento durante o desligamento de objetos/thread.DesktopAcrylicController.Kind
agora pode ser definido para escolher entre algumas aparências padrão de acrílico.DispatcherQueue
tem alguns novos eventos e auxiliares para facilitar o desligamento melhor organizado e para que os aplicativos que utilizam Ilhas executem facilmente um loop de eventos com suporte padrão.InputNonClientPointerSource
no namespace Microsoft.UI.Input pode ser utilizado em cenários personalizados da barra de título para definir regiões que não sejam da área do cliente. O código pode se registrar para eventos correspondentes, como eventos de passar o mouse e clicar nessas regiões.AppWindow
tem alguns novos auxiliares para obter e associar a umDispatcherQueue
.- O novo evento
TreeView.SelectionChanged
permite que os desenvolvedores respondam quando o usuário ou o código por trás altera o conjunto de nós selecionados no controleTreeView
. - O novo controle
ScrollView
fornece uma nova alternativa aoScrollViewer
. Esse novo controle é altamente alinhado em comportamento e API com o controleScrollViewer
existente, mas é baseado emInteractionTracker
, tem novos recursos, como alterações de exibição orientadas por animação, e também foi projetado para garantir a funcionalidade completa deItemsRepeater
. Consulte Um problema mais flexível do ScrollViewer - Problema n.º 108 - microsoft/microsoft-ui-xaml (github.com) para obter mais detalhes. Vários novos tipos, incluindoScrollPresenter
, fazem parte do modeloScrollView
de modo geral. - O novo controle
AnnotatedScrollBar
amplia a funcionalidade de uma barra de rolagem regular, fornecendo uma maneira fácil de navegar por uma grande coleção de itens. Isso é feito por meio de um trilho clicável com rótulos que funcionam como marcadores. Ele também permite uma compreensão mais granular do conteúdo rolável, exibindo uma dica de ferramenta ao passar o mouse sobre o trilho clicável.
Problemas conhecidos
- Ao utilizar
ExtendsContentIntoTitleBar = true
, os cliques no canto superior esquerdo da janela, por padrão, sempre mostram o menu da janela do sistema (Minimizar/Fechar/etc.) ao invés de permitir a entrada do ponteiro no conteúdo da janela. Isso, por exemplo, significa que um botão Voltar nessa área da barra de título não funcionará. Uma solução alternativa para esse problema é definirAppWindow.TitleBar.IconShowOptions = Microsoft.UI.Windowing.IconShowOptions.HideIconAndSystemMenu
no AppWindow da janela. - Existem novas exceções contínuas ao ocultar
ShouldConstrainToRootBounds="False"
popups/submenus. Isso inclui a ocultação de dicas de ferramentas, conforme relatado aqui: Ignorar uma dica de ferramenta gera 4 exceções nativas · Problema n.º 8699 · microsoft/microsoft-ui-xaml (github.com) - Na versão 1.4, os botões de legenda min./máx./fechar para
ExtendsContentIntoTitleBar = true
agora são desenhados pelo AppWindow ao invés do XAML. Isso foi projetado, mas pode afetar os aplicativos que estavam substituindo os estilos internos do XAML para ocultar ou fazer a personalização extra desses botões, como neste relatório: Não é possível ocultar o botão de legenda na barra de título. Problema n.º 8705 - microsoft/microsoft-ui-xaml (github.com) - No .NET 8, houve uma alteração interruptiva na forma como ele lida com o grafo identificador de runtime: [Alteração interruptiva]: Os projetos com destino ao .NET 8 e superior utilizarão, por padrão, um grafo RID menor e portátil. - Problema #36527 - dotnet/docs (github.com). Devido a esse problema e ao fato de o .NET 8 ainda não ter sido lançado oficialmente, o SDK do Aplicativo Windows 1.4 não dá suporte oficial ao .NET 8. Entretanto, se você ainda quiser direcionar a versão de pré-lançamento do .NET 8 com essa versão do SDK do Aplicativo, recomendamos as seguintes etapas:
- Recomenda-se definir UseRidGraph como true. Você também precisará atualizar a propriedade
<RuntimeIdentifiers>
no arquivo.csproj
para<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
, bem como atualizar cada arquivoPropeties\*pubxml
para alternar dewin10
parawin
na propriedade<RuntimeIdentifier>
(por exemplo,<RuntimeIdentifier>win-x86</RuntimeIdentifier>
).
- Recomenda-se definir UseRidGraph como true. Você também precisará atualizar a propriedade
- Com o SDK do Aplicativo Windows 1.4, o destino
GenerateDeploymentManagerCS
emMicrosoft.WindowsAppSDK.DeploymentManager.CS.targets
foi renomeado paraGenerateBootstrapCS
. MenuFlyout
em segundo plano não utiliza o tema solicitado pelo aplicativo:- O texto do MenuFlyoutItem não está sincronizado com o tema do sistema. · Problema n.º 8678 · microsoft/microsoft-ui-xaml (github.com)
- versão prévia 1.4: o tema de fundo do submenu é derivado do tema do sistema e não de seu elemento associado · Problema n.º 8756 · microsoft/microsoft-ui-xaml (github.com)
Correções de bug
- Foi corrigido um problema em que a chamada à API
Microsoft.Windows.AppLifecycle.AppInstance.Restart("")
causava o travamento de aplicativos descompactados. Para obter mais informações, confira o issue n.º 2792 do GitHub. - Foi corrigido um problema de falha do instalador introduzido na versão 1.4-experimental1. Para obter mais informações, confira o issue n.º 3760 do GitHub.
- Foi corrigido um problema no qual o texto riscado não era removido corretamente em um TextBlock. Para obter mais informações, confira o issue n.º 1093 do GitHub.
- Foi corrigido um problema que causava a navegação incorreta com Shift + Tab em um painel com TabFocusNavigation definido como "Uma vez". Para obter mais informações, confira o issue n.º 1363 do GitHub.
- Foi corrigido um problema no C++/WinRT que impedia que
{x:Bind}
funcionasse corretamente com uma propriedade de um controle XAML nomeado. Para obter mais informações, confira o issue n.º 2721 do GitHub. - Foi corrigido um problema de AccessViolation de runtime nos aplicativos Desktop WinUI causado pela configuração
DebugSettings.EnableFrameRateCounter = true
. Para obter mais informações, confira o issue n.º 2835 do GitHub. - Foi corrigido um problema em que
XamlTypeInfo.g.cpp
não incluía os cabeçalhos necessários. Para obter mais informações, confira o issue n.º 4907 do GitHub. - Foi corrigido um problema de falha causado pela entrada simultânea de vários toques e do mouse. Para obter mais informações, confira o issue n.º 7622 do GitHub.
- Foi corrigido o problema que impedia a rolagem de uma janela ativa do aplicativo WinUI 3 quando a configuração do sistema para desabilitar a rolagem de janelas inativas ao passar o mouse estava em vigor. Para obter mais informações, confira o issue n.º 8764 do GitHub.
- Foi corrigida uma falha ao tentar criar uma subclasse
MediaPlayerElement
. - Foram corrigidos alguns problemas de falha e vazamento de memória em
TreeView
. - Foi corrigido um problema de travamento do aplicativo que poderia ocorrer ao utilizar o teclado para navegar em
RadioButtons
. - Correção de uma falha ao utilizar o teclado para navegar em um
PipsPager
. - Foi corrigida a escala do conteúdo WebView2 com a configuração de acessibilidade "Tamanho do texto" no aplicativo Configurações.
- Correção de uma falha que poderia ocorrer quando as animações estavam sendo executadas quando a tela estava desligada.
- Foi corrigido um problema de desempenho introduzido na versão 1.3 que adicionava uma sobrecarga de ~10% ao primeiro layout/renderização.
Versão 1.3
Versão 1.3.3 (1.3.230724000)
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.3.
- Foi corrigido um problema no qual o mouse às vezes parava de funcionar quando uma caixa de diálogo era fechada.
- Corrigido um problema de implantação que impedia a instalação de aplicativos devido a uma incompatibilidade de versões de pacotes no sistema. Para obter mais informações, confira o issue n.º 3740 do GitHub.
- Foi corrigido o problema que afetava o posicionamento do menu de contexto no SDK do Aplicativo Windows 1.3.
- Corrigido um problema que fazia com que alguns aplicativos WinUI3, em algumas situações, falhassem quando o aplicativo era fechado porque o XAML se desligava muito cedo.
- Foi corrigido um problema no qual os ícones de fonte não estavam sendo espelhados corretamente em idiomas da direita para a esquerda. Para obter mais informações, confira o issue n.º 7661 do GitHub.
- Foi corrigido um problema que causava a falha de um aplicativo ao ser desligado quando os recursos ficavam inoperantes na ordem incorreta. Para obter mais informações, confira o issue n.º 7924 do GitHub.
Versão 1.3.2 (1.3.230602002)
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.3.
- Correção de uma falha ao definir um Cursor Protegido.
- Correção de um problema de desempenho no XamlMetadataProvider durante a inicialização do aplicativo. Para obter mais informações, confira o issue n.º 8281 do GitHub.
- Correção de um problema com hiperlinks e toque em um RichTextBlock. Para obter mais informações, confira o issue n.º 6513 do GitHub.
- Correção de um problema com rolagem e touchpads no WebView2. Para obter mais informações, confira o issue n.º 7772 do GitHub.
- Correção de um problema em que uma atualização de SDK do Aplicativo Windows às vezes exigia uma reinicialização do Visual Studio. Para obter mais informações, confira o issue n.º 3554 do GitHub.
- Correção de uma exceção ruidosa no desligamento ao realizar a execução em um depurador.
Versão 1.3.1 (1.3.230502000)
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.3.
- Corrigido o problema que fazia com que os aplicativos falhassem ao definir o SystemBackdrop se o Conteúdo fosse nulo. Para obter mais informações, confira o issue n.º 8416 do GitHub.
- Corrigido o problema que fazia com que os aplicativos falhassem ao definir o Título da janela no XAML, uma nova funcionalidade adicionada à versão 1.3.0. Para obter mais informações, confira o issue n.º 3689 do GitHub.
- Corrigido o problema em que uma janela se concentrava incorretamente quando seu conteúdo era alterado.
- Corrigido o problema com a criação de projetos C++ com os modelos de projeto do WinAppSDK 1.3.
- Modelos atualizados no Visual Studio Marketplace
Versão 1.3
As seções a seguir descrevem recursos novos e atualizados e problemas conhecidos para a versão 1.3.
Em um aplicativo existente do SDK do Aplicativo Windows 1.2, é possível atualizar o pacote Nuget para 1.3.230331000 (confira a seção Atualizar um pacote em Instalar e gerenciar pacotes no Visual Studio usando o Gerenciador de Pacotes NuGet).
Para visualizar o runtime atualizado e o MSIX, consulte Downloads para o SDK do Aplicativo Windows.
APIs de pano de fundo do XAML
Com propriedades internas na janela do XAML, os cenários do Mica tela de fundo acrílico são mais fáceis de usar em seu aplicativo WinUI 3. Confira os documentos de API de Pano de Fundo do Sistema e do Mica para obter mais informações sobre as propriedades do Cenário do XAML.
public MainWindow()
{
this.InitializeComponent();
this.SystemBackdrop = new MicaBackdrop();
}
Window.AppWindow
Substituindo várias linhas de código clichê, agora você pode usar as APIs do AppWindow diretamente de uma Janela por meio de Window.AppWindow
.
Novos recursos do WinAppSDK
ApplicationModel.DynamicDependency
:PackageDependency.PackageGraphRevisionId
que substitui o MddGetGenerationId preterido.- Gerenciador de ambientes:
EnvironmentManager.AreChangesTracked
para informar se as alterações no gerenciador de ambiente podem ser controladas em seu aplicativo. - Um novo evento, DebugSettings.XamlResourceReferenceFailed, agora é gerado quando uma pesquisa Estática/ThemeResource referenciada não pode ser resolvida. Esse evento fornece acesso a um rastreamento que detalha onde a estrutura pesquisou essa chave para permitir depurar melhor as falhas de pesquisa estáticas ThemeResource. Para obter mais informações, confira a especificação de API Rastrear falhas de pesquisa de referência de recurso XAML no GitHub.
Outras atualizações
- Consulte nosso marco do WinAppSDK 1.3 no GitHub do WinAppSDK para obter problemas adicionais resolvidos nesta versão.
- Confira nosso marco da WinUI 3 no WinAppSDK 1.3 no GitHub do microsoft-ui-xaml para consultar problemas adicionais resolvidos nesta versão.
- Com o VSIX experimental mais recente, agora você pode converter seu aplicativo entre não empacotado e empacotado por meio do menu do Visual Studio em vez de no arquivo de projeto.
Problema conhecido
Devido a uma alteração recente no compilador do XAML, um projeto existente que é atualizado para 1.3 pode sofrer um erro de build como o seguinte no Visual Studio:
> C:\Users\user\\.nuget\packages\microsoft.windowsappsdk\\**1.3.230331000**\buildTransitive\Microsoft.UI.Xaml.Markup.Compiler.interop.targets(537,17): error MSB4064: The "PrecompiledHeaderFile" parameter is not supported by the "CompileXaml" task loaded from assembly: Microsoft.UI.Xaml.Markup.Compiler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=de31ebe4ad15742b from the path: C:\Users\user\\.nuget\packages\microsoft.windowsappsdk\\**1.2.230118.102**\tools\net472\Microsoft.UI.Xaml.Markup.Compiler.dll. Verify that the parameter exists on the task, the <UsingTask> points to the correct assembly, and it is a settable public instance property.
Isso é causado pelo Visual Studio usando uma DLL de tarefa do compilador do XAML armazenada em cache a partir da 1.2, mas conduzindo-a com lógica incompatível do MSBuild de 1.3, conforme conferido no texto de erro acima. A solução alternativa é desligar o Visual Studio, reiniciá-lo e refazer upload da solução.
Versão 1.2
Versão 1.2.5 (1.2.230313.1)
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.2.
- Corrigido o problema que fazia com que os aplicativos falhassem durante o desligamento da Composição.
- Corrigido o problema que fazia com que os aplicativos continuassem executando animações mesmo quando a tela estava desativada.
- Corrigido o problema que fazia com que a entrada de mouse e toque falhasse no WebView2 quando a entrada do mouse e do teclado ocorreu simultaneamente. Para obter mais informações, confira o issue n.º 3266 do GitHub.
Versão 1.2.4 (1.2.230217.4)
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.2.
- Corrigido o problema que fazia com que os aplicativos autossuficientes não pudessem definir as Configurações do UAC. Para obter mais informações, confira o issue n.º 3376 do GitHub.
- Corrigido o problema que fazia com que as notificações por push retornassem um tempo de Expiração impreciso com
PushNotificationChannel::ExpirationTime
. Para obter mais informações, confira o issue n.º 3300 do GitHub. - Corrigido o problema que fazia com que números negativos fossem considerados "inválidos" ao passar um duplo como um parâmetro para uma função x:Bind.
- Várias correções para atualizar a WinUI do VSIX. Essas atualizações incluíram simplificar a dipAwareness do modelo de projeto no app.manifest, remover os modelos da UWP, atualizar arquivos de recursos localizados, adicionar a ID do telefone para desbloquear o envio do repositório e remover o aviso de direitos autorais e licença. Para obter mais informações, confira os issues n.º 5659, n.º 3205, n.º 3323, n.º 3322 e n.º 3143 do GitHub.
Versão 1.2.3 (1.2.230118.102)
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.2.
- Corrigido o problema que fazia com que os aplicativos da WinUI 3 falhassem quando várias janelas foram fechadas.
- Corrigido o problema que fazia com que uma falha no fechamento do aplicativo quando duas ou mais referências à interface do ThreadPoolTimer são chamadas. Para obter mais informações, confira os issues n.º 7260 e n.º 7239 do GitHub.
- Corrigido o problema que fazia com que todos os aplicativos do MSIX de projeto único executassem como confiança total. Para obter mais informações, confira o issue n.º 7766 do GitHub.
Versão 1.2.2 (1.2.221209.1)
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.2.
- Corrigido o problema que fazia com que a Microsoft Store e os pacotes de upload lateral (por exemplo, do instalador, do NuGet e do bootstrapper) falhassem na instalação se o outro já estivesse instalado. Para obter mais informações, confira o issue n.º 3168 do GitHub.
- Corrigido o problema que causava efeitos de elasticidade e curvas de animação ausentes ao rolar com um touchpad. Para obter mais informações, confira o issue n.º 7874 do GitHub.
- Corrigido o problema em ListView que causava vazamentos de memória.
- Corrigido o problema que fazia com que o modelo de Botão não respeitasse a propriedade Primeiro plano após passar o mouse. Para obter mais informações, confira o issue n.º 7208 do GitHub.
- Corrigido o problema que causava uma exceção desnecessária quando não há MediaPlaybackItem em um MediaElement.
- Corrigido o problema que fazia com que um quadro branco aparecesse no MediaPlayerElement em transições de conteúdo.
- Correção de problemas adicionais que faziam com que App.UnhandledException não capturasse exceções de outros threads. Para obter mais informações, confira os issues n.º 1259 e n.º 5221 do GitHub.
Versão 1.2.1 (1.2.221116.1)
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui uma correção importante de bug para a versão 1.2.
Corrigido o problema que causava uma falha na inicialização em aplicativos da WinUI 3 do C++ ao adicionar um controle WebView2 ou TextBox. Para obter mais informações, confira os issues n.º 7911 e n.º 3117 do GitHub.
Versão 1.2
As seções a seguir descrevem recursos novos e atualizados, limitações e problemas conhecidos para 1.2.
Observação
O Visual Studio 2019 e o .NET 5 não têm mais suporte para a criação de aplicativos C# (confira SDK do Aplicativo Windows 1.2 migrando para o C# WinRT 2.0). Você precisará do Visual Studio 2022 e de uma das seguintes versões do SDK do .NET: 6.0.401 (ou posterior), 6.0.304, 6.0.109. Quando lançado, o WinAppSDK 1.2 também dará suporte ao .NET 7.
Para atualizar sua versão do SDK do .NET, instale a última versão do Visual Studio 2022 ou visite Downloads do .NET. Ao atualizar seu pacote NuGet sem a versão necessária do SDK do .NET, você visualizará um erro como: "Esta versão do WindowsAppSDK requer .NET 6+ e WinRT.Runtime.dll versão 2.0 ou superior". Para atualizar o projeto do .NET 5.0 para o .NET 6.0, abra o arquivo de projeto e altere "TargetFramework" para net6.0
e "Versão do sistema operacional de destino" para o valor apropriado (como net6.0-windows10.0.19041.0
).
Widgets de terceiros no Windows
A placa de widgets foi introduzida pela primeira vez no Windows 11 e foi limitada à exibição de widgets internos. Os widgets são pequenos contêineres de interface do usuário que exibem texto e elementos gráficos no quadro de widgets e estão associados a um aplicativo instalado no dispositivo. Com o SDK do Aplicativo Windows, como desenvolvedores de terceiros, agora você pode criar widgets para seus aplicativos do Win32 empacotados e testá-los localmente no quadro de widgets no Windows 11.
Para obter mais informações sobre widgets, confira Visão geral de widgets.
Para começar a desenvolver os widgets para seu aplicativo, confira os documentos de desenvolvimento de Provedores de serviços do widget e os Conceitos básicos de design de widgets para pré-requisitos, diretrizes e melhores práticas.
Os pré-requisitos para esta versão incluem:
- Modo de Desenvolvedor habilitado no computador de desenvolvimento.
- O computador de desenvolvimento está executando uma versão do Windows do Canal do Desenvolvedor do WIP (Versão Prévia do Windows Insider) superior ou igual a 25217 com a versão do quadro de widgets 521.20060.1205.0 ou superior.
Limitações conhecidas ao desenvolver widgets
- Os widgets de terceiros só podem ser testados localmente em dispositivos registrados no WIP para esta versão prévia.
- Os widgets só podem ser criados para aplicativos do Win32 empacotados. Os widgets para PWA (Aplicativo Web Progressivo) têm suporte planejado como parte do Microsoft Edge 108.
DisplayInformation
Os aplicativos da área de trabalho do Windows agora podem dar suporte ao HDR (Alto Alcance Dinâmico) e ao ACM (Gerenciamento Automático de Cores) por meio da classe DisplayInformation no WinAppSDK. A classe DisplayInformation permite monitorar informações relacionadas à exibição de um aplicativo. Isso inclui eventos para permitir que os clientes monitorem alterações na exibição do aplicativo que afetam a tela (ou as telas) na qual a exibição reside, bem como alterações em telas que podem afetar a exibição do aplicativo.
WinUI 3
Os aplicativos da WinUI 3 podem reproduzir áudio e vídeo com os controles de reprodução de mídia MediaPlayerElement e MediaTransportControls. Para obter mais informações sobre como e quando usar os controles de mídia, confira Players de mídia.
A WinUI 3 foi atualizada com os controles, estilos e comportamentos mais recentes da WinUI 2.8. Essas atualizações incluem a adição do controle InfoBadge, melhorias na acessibilidade e no modo de alto contraste, bem como correções de bugs nos controles. Para obter mais detalhes, confira as notas de versão para a WinUI 2.7 e WinUI 2.8.
Problemas corrigidos
- O material de pano de fundo acrílico com DesktopAcrylicController agora tem suporte em aplicativos Windows 10. Para obter mais informações, confira o issue n.º 7112 no GitHub.
- Correção de vários problemas que causavam falha no roteamento de App.UnhandledException. Para obter mais informações, confira o issue n.º 5221 no GitHub. Em relação aos problemas restantes, as soluções alternativas estão documentadas nos seguintes problemas do GitHub e serão resolvidas em uma versão 1.2 futura:
- Corrigido o problema que fazia com que os estilos de ListView regredissem e alterassem do WinAppSDK 1.1. Para obter mais informações, confira o issue n.º 7666 no GitHub.
- Corrigido o problema que fazia com que a cor incorreta da tela de fundo de fallback do Mica aparecesse quando o aplicativo estava inativo. Para obter mais informações, confira o issue n.º 7801 no GitHub.
Limitações conhecidas
- Ao criar um novo projeto da WinUI 3 com o Visual Studio 2022 17.4.0, ele fará referência a uma versão prévia do WinAppSDK. Use o Gerenciador de Pacotes NuGet para atualizar a referência a esta versão.
- A configuração de MediaPlayerElement.Source como URI relativo (ms-appx/ms-resource) falha em aplicativos não empacotados. A solução alternativa recomendada é converter o URI ms-appx:/// relativo em um URI file:/// totalmente resolvido.
Corte para aplicativos desenvolvidos com o .NET
Os desenvolvedores do .NET agora podem publicar aplicativos WinAppSDK aparados. Com o CsWinRT 2.0, as projeções C#/WinRT distribuídas no WinAppSDK agora são aparáveis. Publicar seu aplicativo aparado pode reduzir o volume de disco do aplicativo ao remover qualquer código não utilizado dos binários aparados. Os aplicativos também podem observar uma melhoria no desempenho de inicialização. Com um aplicativo "Olá, Mundo" básico, observamos uma melhoria de cerca de 80% no volume de disco e uma melhoria de desempenho de inicialização de aproximadamente 7% quando publicado o formato aparado. Com a Galeria da WinUI, observamos uma melhoria de aproximadamente 45% no volume de disco.
Para obter mais detalhes sobre como habilitar a aparação, limitações de aparação (como reflexão em relação a tipos aparados) e aparar avisos, confira Aparar implantações autônomas e executáveis. Os desenvolvedores devem testar cuidadosamente seus aplicativos após a aparação para garantir que tudo funcione conforme o esperado. Para obter mais informações, confira o issue n.º 2478 no GitHub.
Suporte ao Arm64 do Visual Studio
Já no Project Reunion (agora WinAppSDK) 0.5, os aplicativos desenvolvidos com o WinAppSDK puderam ser executados no Arm64. A partir do Visual Studio 17.3 Versão Prévia 2, será possível desenvolver aplicativos nativos com WinAppSDK em dispositivos Arm64.
Para começar a desenvolver em um dispositivo Arm64, confira Windows no Arm e Visual Studio Arm64 .
Notificações
AppNotificationBuilder introduzido como uma alternativa ao conteúdo XML para criar e definir notificações de aplicativo.
Para obter informações de uso, confira a especificação do AppNotificationBuilder no GitHub.
Consulte também Início Rápido: notificações de aplicativo no SDK do Aplicativo Windows para obter um exemplo de como criar um aplicativo da área de trabalho do Windows que envia e recebe notificações de aplicativo local.
Alterações da falha
Para notificações por push, ao fazer uma chamada de solicitação de canal, os aplicativos precisarão usar a ID de Objeto do Azure em vez da ID do Aplicativo do Azure. Confira Início Rápido: notificação por push no SDK do Aplicativo Windows para obter detalhes sobre como localizar sua ID de Objeto do Azure.
Problema corrigido
O PushNotificationManager.IsSupported executará uma verificação para o modo elevado. Ele retornará false
se o aplicativo for elevado.
Limitações conhecidas (Notificações)
- Em AppNotificationScenario,
Urgent
só há suporte aos builds do Windows 19041 e posteriores. Use o AppNotificationBuilder.IsUrgentScenarioSupported para verificar se o recurso está disponível em runtime. - Em AppNotificationButton,
hint-toolTip
ehint-buttonStyle
só têm suporte aos builds 19041 e posteriores. Use o IsButtonStyleSupported e IsToolTipSupported para verificar se o recurso está disponível em runtime. - No MediaPlayerElement, quando usada na marcação do XAML para um aplicativo não empacotado, a propriedade Origem não pode ser definida com um URI ms-appx ou ms-resource. Como alternativa, defina Origem usando um URI de arquivo ou defina a partir do código.
Windowing
A personalização completa da barra de título agora está disponível no Windows 10, versão 1809 e posterior por meio da classe AppWindowTitleBar. Defina o AppWindowTitleBar.ExtendsContentIntoTitleBar como true
para estender o conteúdo na área da barra de título e SetDragRectangles para definir regiões de arrastar (além de outras opções de personalização).
Caso esteja usando a propriedade AppWindowTitleBar.IsCustomizationSupported para verificar se você pode chamar as APIs AppWindowTitleBar, ela agora retornará true
em versões do SDK do Aplicativo Windows para Windows 10 com suporte (1809 e posteriores).
Limitações conhecidas (janelas)
Não há suporte para personalizações básicas da barra de título no Windows 10. Elas incluem Cor da tela de fundo, Cor da tela de fundo inativa, Cor do primeiro plano, Cor do primeiro plano inativo e Opções de exibição de ícone. Se chamar essas propriedades, elas serão ignoradas silenciosamente. Todas as outras APIs AppWindowTitleBar funcionam no Windows 10, versão 1809 e posteriores. Para as APIs de cores do botão de legenda (entre outras) e Altura, ExtendsContentIntoTitleBar devem ser definidas como true
, caso contrário, elas também serão ignoradas silenciosamente.
Controle de acesso
Foi apresentado o security.accesscontrol.h com a função GetSecurityDescriptorForAppContainerNames para facilitar e simplificar o compartilhamento de objetos nomeados entre processos empacotados e as APIs gerais do Win32. Esse método usa uma lista de PFNs (Nomes de Família de Pacotes) e máscaras de acesso e retorna um descritor de segurança. Para obter mais informações, confira a especificação do GetSecurityDescriptorForAppContainerNames no GitHub.
Outras limitações e problemas conhecidos
Importante
Ao referenciar o WinAppSDK 1.2 de um projeto, é possível ver um erro semelhante a: "Downgrade de pacote detectado: Microsoft.Windows.SDK.BuildTools de 10.0.22621.1 para 10.0.22000.194.", que é causado por referências incompatíveis ao pacote do projeto de aplicativo e ao pacote WinAppSDK. Para resolver isso, atualize a referência no projeto para uma versão mais recente e compatível do Microsoft.Windows.SDK.BuildTools.
- Os testes de unidade podem falhar com um erro
REGDB_E_CLASSNOTREG
no painel de saída Testes no Visual Studio. Como alternativa, adicione<WindowsAppContainer>true</WindowsAppContainer>
ao arquivo de projeto. - Não há suporte para PublishSingleFile do .NET.
- Os padrões de inicializador automático da versão gratuita do WinRT desencaixada e com Bootstrapper são agora definidos apenas para projetos que produzem um executável (OutputType=Exe ou WinExe). Isso impede a adição de inicializadores automáticos em DLLs de biblioteca de classes e outros não executáveis por padrão.
- Caso precise de um inicializador automático em um não executável (por exemplo, uma DLL de teste carregada por um executável genérico que não inicializa o Bootstrapper), você poderá habilitar explicitamente um inicializador automático em seu projeto por meio de
<WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize>
ou<WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>
.
- Caso precise de um inicializador automático em um não executável (por exemplo, uma DLL de teste carregada por um executável genérico que não inicializa o Bootstrapper), você poderá habilitar explicitamente um inicializador automático em seu projeto por meio de
- Microsoft.WindowsAppRuntime.Release.Net.dll é sempre o binário ARM64 e não funciona para aplicativos x86 e x64. Ao chamar explicitamente a API de Inicialização, não use o assembly Microsoft.WindowsAppRuntime.Release.Net.dll. Como alternativa, incluía constantes de versão neste arquivo de origem distribuído com o pacote NuGet: '.. \include\WindowsAppSDK-VersionInfo.cs' ou use o inicializador automático.
Versão 1.1
A versão mais recente disponível da linhagem 1.1.x do canal estável do SDK do Aplicativo Windows é a versão 1.1.5. A versão 1.1.x dá suporte a todos os recursos estáveis do canal (confira a seção Recursos disponíveis por canal de lançamento em SDK do Aplicativo Windows canais de versão).
Versão 1.1.5
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.1.
Correções de bug
- Corrigido o problema em que o Acrílico não funciona se o Mica está habilitado. Para obter mais informações, confira o issue n.º 7200 no GitHub.
- Corrigido o problema que fazia com que os aplicativos que dependem do instalador do WindowsAppRuntime (por exemplo, aplicativos não empacotados) falhassem ao serem executados em computadores Windows 10 ARM64. Para obter mais informações, confira o issue n.º 2564 no GitHub.
Versão 1.1.4
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.1.
Correções de bug
- Corrigida a regressão de 1.0.x, fazendo com que o ListView, TreeView e outros controles 'List' falhassem ao rolar com muitos itens. Para obter mais informações, confira o issue n.º 7230 no GitHub.
- Corrigido o problema com DispatcherQueue que fazia com que os retornos de chamada enfileirados não fossem mais invocados.
- Corrigido o problema que causava uma falha no aplicativo ao chamar
DeploymentManager.Initialize
várias vezes na mesma sessão do aplicativo. - Corrigido o problema que fazia com que os aplicativos C# falhassem ao compilar no Visual Studio Arm64. Para obter mais informações, confira o issue n.º 7140 no GitHub.
- Correção de falha intermitente no código de imagem XAML devido ao tratamento incorreto de falhas.
- Corrigido o problema de perda de memória ao anexar um manipulador de eventos em ItemsRepeater com um UserControl pai. Para obter mais informações, confira o issue n.º 6123 no GitHub.
- Corrigido o problema que causava uma falha de build no Visual Studio 17.3 quando um projeto de aplicativo é configurado para habilitar atualizações automáticas de seu pacote quando ele é sideload (ou seja, .appinstaller). Para obter mais informações, confira o issue n.º 2773.
- Corrigido o problema que fazia com que aplicativos empacotados distribuídos pelo Microsoft Store que chamam o Inicializar (por exemplo, para Push) o chamassem de forma redundante como DeploymentManager::GetStatus retornado
Package Install Needed
quando os pacotes Main e Singleton já estão instalados. Isso causou uma degradação de desempenho na inicialização do aplicativo. - Corrigido o problema que causava uma exceção em aplicativos de instância única quando o evento de limpeza era destinado a ser ignorado se não pudesse ser aberto. Para obter mais informações, confira o PR no GitHub.
Versão 1.1.3
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.1.
Correções de bug
- Corrigido o conjunto relacionado de problemas em que o XAML falha ao incluir um controle ProgressBar, ProgressRing, PipsPager, PersonPicture ou Expander na primeira página do aplicativo. Para obter mais informações, confira o issue n.º 7164 no GitHub.
- Corrigido o problema que fazia com que o instalador x64 falhasse ao instalar o runtime do SDK do Aplicativo Windows. Para obter mais informações, confira o issue n.º 2713 no GitHub.
- Corrigido o problema que fazia com que o WindowsAppRuntime falhasse na instalação se uma versão superior do runtime estivesse instalada. Para obter mais informações, confira a discussão 2708 no GitHub.
Versão 1.1.2
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.1.
Correções de bug
- Corrigido o problema em que o XAML falhava ao fechar uma janela enquanto uma caixa de diálogo estava aberta. Para obter mais informações, confira o issue n.º 1032 no GitHub.
- Adicionada marca
<auto-generated>
em arquivos C# para evitar avisos StyleCop. Para obter mais informações, confira o issue n.º 4526 no GitHub. - Corrigido o problema que causava um erro de violação de acesso e falha ao chamar o MddBootstrapInitialize quando o pacote de estrutura correspondente não estava instalado. Para obter mais informações, confira o issue n.º 2592 no GitHub.
- Corrigido o problema em que os modelos de item do C# da WinUI 3 estavam ausentes no Visual Studio. Para obter mais informações, confira o issue n.º 7148 no GitHub.
- Corrigido o problema em que o instalador do WindowsAppRuntime falhava quando executado como usuário do sistema. Para obter mais informações, confira o issue n.º 2546 no GitHub.
Versão 1.1.1
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.1.
Correções de bug
- Corrigido o problema que fazia com que os aplicativos falhassem às vezes durante uma operação de arrastar e soltar. Para obter mais informações, confira o issue n.º 7002 no GitHub.
- Corrigido o problema que fazia com que a barra de título desaparecesse ao alternar o AppWindowPresenterKind de FullScreen para Padrão.
- Corrigido o problema em que as APIs do Bootstrapper como
ApiInformation.IsPropertyPresent
eApiInformation.IsMethodPresent
causavam exceções sem tratamento em aplicativos que não são empacotados. Para obter mais informações, confira o issue n.º 2382 no GitHub. - Corrigido o problema que causava o congelamento do aplicativo ao maximizar o aplicativo com entrada de caneta.
Versão 1.1
As seções a seguir descrevem recursos novos e atualizados, limitações e problemas conhecidos para 1.1.
Observação
Para desenvolvedores do C#, uma das seguintes versões do SDK do .NET (ou posterior) é necessária: 6.0.202, 6.0.104, 5.0.407 e 5.0.213. Para atualizar sua versão do SDK do .NET, visite os Downloads do .NET ou atualize para a última versão do Visual Studio. Sem a versão necessária do SDK do .NET, ao atualizar o pacote NuGet, você visualizará um erro como: "Esta versão do WindowsAppSDK requer o WinRT.Runtime.dll versão 1.6 ou superior".
Reinicialização e ciclo de vida do aplicativo
Agora, os aplicativos podem iniciar uma reinicialização explícita com o estado de argumentos específicos baseados na API RegisterApplicationRestart existente para se registrar no sistema operacional e reiniciar em cenários de atualização e reinicialização de travamento.
Novos recursos:
- Qualquer aplicativo de área de trabalho empacotado ou não empacotado pode terminar e reiniciar-se no comando e ter acesso a uma sequência de linha de comando arbitrária para a instância reiniciada usando a API
AppInstance.Restart()
.- Essa é uma versão elevada e síncrona da API da UWP
RequestRestartAsync()
que permite a reinicialização com argumentos e retorna umAppRestartFailureReason
se a reinicialização não for bem-sucedida. - Confira os documentos da API de Reinicialização no GitHub para obter informações de referência de uso.
- Essa é uma versão elevada e síncrona da API da UWP
WinUI 3
A WinUI 3 é uma estrutura de UX (experiência do usuário) nativa para o SDK do Aplicativo Windows. Esta versão inclui novos recursos do WinAppSDK 1.0, bem como vários aprimoramentos de estabilidade das versões de preview 1.0 1.1.
Novos recursos:
- Mica e plano de fundo acrílico agora estão disponíveis para aplicativos da WinUI 3.
- Para obter mais informações sobre esses materiais, confira os Materiais em Windows 11. Confira nosso código de exemplo para aplicar o Mica em aplicativos C++ em Usando um SystemBackdropController com XAML da WinUI 3 e em aplicativos C# no GitHub como parte da Galeria da WinUI 3.
- Introduzidos pela primeira vez na versão 1.0.1, estabilizamos e habilitamos a criação de várias janelas no mesmo thread em aplicativos da WinUI 3. Consulte o problema 5918 para obter mais informações.
Bugs corrigidos:
- Corrigido o problema ao usar o Mica em que o aplicativo falhava quando uma janela é dividida igualmente por duas telas. Consulte o problema 7079 no GitHub para obter mais informações.
- Corrigido o problema que fazia com que aplicativos C# com WebView2 falhassem na inicialização quando o CRT (Runtime do C/C++) não estava instalado atualizando o SDK do WebView2 de 1020.46 para 1185.39.
- Corrigido o problema que fazia com que alguns cantos arredondados mostrassem um gradiente quando deveriam ser uma cor sólida. Para obter mais informações, confira os issues n.º 6076 e n.º 6194 no GitHub.
- Corrigido o problema em que os estilos atualizados estavam ausentes de generic.xaml.
- Correção do problema de ciclo de layout que fazia com que um aplicativo falhasse ao rolar até o final de um ListView. Para obter mais informações, confira o issue n.º 6218 no GitHub.
- Corrigido o problema em que os usuários não conseguem soltar um elemento quando o recurso "arrastar e soltar" está habilitado. Para obter mais informações, confira o issue n.º 7008 no GitHub.
Limitações conhecidas:
- Ao usar uma barra de título personalizada, os controles legenda não alteram a cor na alteração do tema.
- O XAML falha quando um usuário fecha uma janela enquanto uma caixa de diálogo está aberta.
Implantação
Novos recursos:
- Os aplicativos empacotados agora podem forçar a implantação dos pacotes de runtime do SDK do Aplicativo Windows usando a API DeploymentManager.Initialize(DeploymentInitializeOptions) ou usando a opção --force com o instalador do Windows App Runtime.
- Há categorias de extensão funcionais adicionais, UnlockedDEHs, disponíveis para aplicativos empacotados. Confira as notas sobre a 1.1 Notas de versão da Versão Prévia 3 para obter mais detalhes. Eles exigem que o pacote de estrutura de SDK do Aplicativo Windows seja instalado. Confira Downloads do SDK do Aplicativo Windows para instalar o runtime.
- Há suporte para a implantação autônoma. Confira a Visão geral da implantação do SDK do Aplicativo Windows para visualizar as diferenças entre a implantação autônoma e dependente da estrutura e como começar.
- A API do Bootstrapper necessária para aplicativos que não são implantados com MSIX inclui novas opções para melhorar a usabilidade e a solução de problemas. Confira nossa documentação para aplicativos C#, APIs do Bootstrapper C# e para aplicativos C++, cabeçalho mddbootstrapheader.h. Para obter mais detalhes, confira Usar o runtime do SDK do Aplicativo Windows para aplicativos empacotados com localização externa ou não empacotados.
Limitações conhecidas:
- A execução do instalador do Windows App Runtime (WindowsAppRuntimeInstall.exe) requer que o sideload seja habilitado. Para obter mais informações, confira o issue n.º 2469 no GitHub.
- A criação de um pacote MSIX por meio dos menus do Projeto do Visual Studio pode falhar no Visual Studio em alguns cenários. Esse problema será corrigido no Visual Studio versão 17.3 Versão Prévia 2 e atendido no 17.2. Caso encontre esse problema, poderá contornar isso gerando um MSIX da linha de comando, alternando para um projeto não empacotado ou revertendo para o SDK do Aplicativo Windows 1.0.
- Aplicativos autônomos empacotados com MSIX não têm suporte no 1809, causando falha no aplicativo na inicialização.
Elevação
Agora, os aplicativos podem ser executados com privilégios elevados.
Limitações conhecidas:
- O suporte elevado requer a seguinte atualização de manutenção do sistema operacional:
- Não há suporte para notificações por push e de aplicativo para um aplicativo não empacotado com privilégios elevados.
- Os aplicativos da WinUI 3 com privilégios elevados falham ao arrastar um elemento durante uma interação de arrastar e soltar.
Gerenciador de Variáveis de Ambiente
O Gerenciador de Variáveis de Ambiente é uma nova API introduzida no SDK do Aplicativo Windows 1.1. O Gerenciador de Variáveis de Ambiente permite que os desenvolvedores acessem e modifiquem variáveis de ambiente no processo, no usuário e no escopo do computador de uma superfície de API.
Se o Gerenciador de Variáveis de Ambiente for usado de um aplicativo empacotado, todas as operações de variável de ambiente serão registradas. Quando o pacote é removido, todas as operações de variável de ambiente são revertidas.
Novos recursos:
- Obtenha e defina variáveis de ambiente no processo, no usuário e no escopo do computador.
- A variável de ambiente automática reverte quando um pacote que usa o gerenciador de variáveis de ambiente é removido.
- Inclui APIs específicas para PATH e PATHEXT.
Limitações conhecidas:
- Disponível apenas no Windows 11
MRT Core
O MRT Core é uma versão simplificada do Sistema de Gerenciamento de Recursos do Windows moderno que é distribuído como parte do SDK do Aplicativo Windows.
Problemas corrigidos:
- Um problema que faz com que os recursos não sejam indexados por padrão quando um arquivo de recurso é adicionado usando a interface do usuário do VS é corrigido no SDK do .NET 6.0.300. Caso esteja usando uma versão mais antiga do SDK do .NET, continue a usar a solução alternativa documentada nas notas de versão da 1.0. Consulte o problema 1786 no GitHub para obter informações adicionais.
- Um problema que fazia com que o URI do recurso não fosse criado corretamente em aplicativos da WinUI 3 não empacotados do C++ foi corrigido no Visual Studio 2022 versão 17.2. Caso esteja usando uma versão mais antiga do Visual Studio, atualize o Visual Studio para 17.2 para receber essa correção.
Limitações conhecidas:
- Em projetos do .NET, os arquivos de recurso copiados colados na pasta do projeto não serão indexados em F5 se o aplicativo já tiver sido criado. Como solução alternativa, recompile o aplicativo. Consulte o problema 1503 no GitHub para obter mais informações.
Para obter mais informações, consulte Gerenciar recursos com o MRT Core.
Notificações
Os desenvolvedores de aplicativos empacotados (incluindo empacotados com localização externa) e aplicativos não empacotados agora podem enviar notificações do Windows.
Novos recursos:
- Suporte para notificações de aplicativo para aplicativos empacotados e não empacotados.
- Os desenvolvedores podem enviar notificações de aplicativo, também conhecidas como notificações do sistema, localmente ou de seu próprio serviço de nuvem. Consulte Visão geral das notificações por aplicativo.
- Suporte para notificações por push para aplicativos empacotados e não empacotados.
- Os desenvolvedores podem enviar notificações brutas e notificações de aplicativo de seu próprio serviço de nuvem. Consulte Visão geral das notificações por push.
Limitações conhecidas:
- Não há suporte para o envio de notificações de um aplicativo com privilégios elevados.
PushNotificationManager::IsSupported()
não executará uma verificação para o modo elevado.
Windowing
Para facilitar o acesso de programação à funcionalidade implementada em USER32.dll (confira Windows e mensagens), essa versão apresenta mais dessa funcionalidade em AppWindow
própria.
Novos recursos:
- Aplicativos com janelas existentes têm mais controle sobre como uma janela é mostrada, chamando
AppWindow.ShowOnceWithRequestedStartupState
– o equivalente aShowWindow(SW_SHOWDEFAULT)
. - Os aplicativos podem mostrar, minimizar ou restaurar uma janela ao especificar se a janela deve ser ativada ou não no momento em que a chamada é feita.
- Agora, os aplicativos podem determinar dimensões específicas para o tamanho da área do cliente da janela em coordenadas do Win32, sem a necessidade de calcular o dimensionamento da área não cliente para obter um tamanho específico da área do cliente.
- As APIs adicionais do WinRT estão disponíveis para dar suporte ao gerenciamento de ordem z de janelas com base na funcionalidade hWndInsertAfter do SetWindowPos.
- Os aplicativos que desenham barras de título personalizadas com
AppWindowTitleBar.ExtendsContentIntoTitleBar
podem definir uma opçãoPreferredTitleBarHeight
. Agora você tem uma opção entre uma barra de título de altura padrão ou uma barra de título alta que fornece mais espaço para conteúdo interativo. Consulte Barra de título nas diretrizes de design fluente para obter conselhos sobre quando usar uma barra de título alta.
Problemas corrigidos:
- Quando o apresentador de tela inteira é invocado pela primeira vez, a janela agora se encaixa na tela inteira corretamente. Consulte o problema 1853 no GitHub para obter mais informações.
- O Windows criado com
AppWindow::GetFromWindowId
tem oOverlappedPresenter
como apresentador padrão, mas não tem restrições em termos de alterações nos estilos de janela provenientes de outras APIs. O Windows criado com o AppWindow::Create terá as proteções padrão do Apresentador em vigor desde o início. Consulte o problema 2049 no GitHub para obter mais informações. - Usar a API
OverlappedPresenter.SetBorderAndTitlebar
para ocultar botões de legenda e bordas resultaria em uma borda superior de 1px quando maximizada. Isso foi resolvido. Consulte o problema 1693 no GitHub para obter mais informações.
Limitações conhecidas:
Ao usar a API AppWindowTitlebar para personalizar as cores da barra de título padrão, o ícone e o texto são desalinhados em comparação com a barra de título padrão. Para obter mais informações, confira o issue n.º 2459 do GitHub.
Ao resolver o problema 2049 no GitHub (observado acima), apresentamos o seguinte bug: se você aplicar qualquer AppWindowPresenter a um AppWindow recuperado de GetFromWindowId, altere um estilo de janela que está sendo acompanhado por esse Apresentador por meio da chamada a APIs USER32 e tente reverter de volta para o estado anterior da janela aplicando novamente o Apresentador padrão, o resultado é uma janela que não tem nenhuma barra de título. Caso dependa de qualquer Apresentador em seu aplicativo e usar chamadas para USER32 para alterar estilos de janela no momento em que um Apresentador não padrão for aplicado, talvez seja necessário adicionar uma solução alternativa para garantir o comportamento correto da janela até que esse bug seja atendido. Use o seguinte snippet de código como um modelo para contornar o problema:
AppWindow m_appWindow; OverlappedPresenter m_defaultPresenter; private void EnterFullScreen_Click(object sender, RoutedEventArgs e) { // Capture the default presenter. m_defaultPresenter = m_appWindow.Presenter as OverlappedPresenter; // Opt in the default overlapped presenter so it can control various aspects of the AppWindow. m_defaultPresenter.IsAlwaysOnTop = m_defaultPresenter.IsAlwaysOnTop; m_defaultPresenter.IsResizable = m_defaultPresenter.IsResizable; m_defaultPresenter.IsMinimizable = m_defaultPresenter.IsMinimizable; m_defaultPresenter.IsMaximizable = m_defaultPresenter.IsMaximizable; m_defaultPresenter.SetBorderAndTitleBar(m_defaultPresenter.HasBorder, m_defaultPresenter.HasTitleBar); m_appWindow.SetPresenter(AppWindowPresenterKind.FullScreen); } private void ExitFullScreen_Click(object sender, RoutedEventArgs e) { m_appWindow.SetPresenter(AppWindowPresenterKind.Default); }
C#/WinRT
Componentes de Windows Runtime C#, incluindo controles personalizados da WinUI, agora têm suporte. Isso permite que os autores de componentes distribuam componentes de runtime criados em C# para qualquer linguagem compatível com WinRT (por exemplo, C++/WinRT). Consulte, Passo a passo – Criar um componente C# com controles da WinUI 3 e consumi-lo de um aplicativo C++/WinRT que usa o SDK do Aplicativo Windows e o exemplo no GitHub para começar.
Outras limitações e problemas conhecidos
- Os aplicativos que fazem referência a um pacote que depende do WebView2 (como Microsoft.Identity.Client) não são compilados. Isso é causado por binários conflitantes no momento da compilação. Para obter mais informações, confira o issue n.º 2492 no GitHub.
- Usar
dotnet build
com um projeto de biblioteca de classes C# do WinAppSDK pode visualizar um erro de build "A tarefa Microsoft.Build.Packaging.Pri.Tasks.ExpandPriContent não pôde ser carregada". Para resolver esse problema definido<EnableMsixTooling>true</EnableMsixTooling>
no arquivo de projeto. - Os modelos padrão do WinAppSDK observam que o MaxVersionTested="10.0.19041.0" quando deveria ser "10.0.22000.0". Para obter suporte completo de alguns recursos, notadamente UnlockedDEHs, atualize o MaxVersionTested para "10.0.22000.0" no arquivo de projeto.
Versão 1.0
A versão mais recente disponível da linhagem 1.0.x do canal estável do SDK do Aplicativo Windows é a versão 1.0.4. A versão 1.0.x dá suporte a todos os recursos estáveis do canal (confira a seção Recursos disponíveis por canal de lançamento em SDK do Aplicativo Windows canais de versão).
Versão 1.0.4
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.0.
Correções de bug
- Corrigido o problema que fazia com que o AppBars, quando usado como Page.TopAppBar ou Page.BottomAppBar, não renderizasse na tela.
- Corrigido o problema em que aplicativos com um nome de pacote de 12 caracteres ou menos que usam um controle da WinUI de MUXControls.dll falharão imediatamente. Para obter mais informações, confira o issue n.º 6360 no GitHub.
- Correção de problemas de entrada por toque que causaram problemas com atalhos de teclado e outros cenários. Para obter mais informações, confira o issue n.º 6291 no GitHub.
- Corrigido o problema que fazia com que os aplicativos empacotados com MSIX ou implantados como autônomo falhassem na implantação.
- Corrigido o problema que fazia com que os aplicativos falhassem às vezes durante uma operação de arrastar e soltar. Para obter mais informações, consulte o problema 7002 no GitHub.
Versão 1.0.3
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.0.
Correções de bug
- Corrigido o problema que fazia com que aplicativos C# com WebView2 falhassem na inicialização quando o CRT (Runtime do C/C++) não estava instalado.
- Correção de problemas de entrada por toque que causaram problemas com atalhos de teclado e outros cenários. Para obter mais informações, consulte o problema 6291 no GitHub.
Observação: normalmente não adicionamos funcionalidade em uma versão de manutenção, mas a correção do WebView2 desta versão exigiu que atualizemos para a última versão do SDK do WebView2 (1020.46 a 1185.39). Consulte as Notas sobre a versão do SDK do WebView2 para obter informações adicionais sobre o WebView2 1.0.1185.39 e Distribuir seu aplicativo e o Runtime do WebView2 para obter informações adicionais sobre o Runtime do WebView2.
Versão 1.0.2
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 1.0.
Correções de bug
- Correção do problema de ciclo de layout que fazia com que um aplicativo falhasse ao rolar até o final de um ListView. Para obter mais informações, consulte o problema 6218 no GitHub.
- Corrigido o problema que fazia com que aplicativos C# falhassem na inicialização quando o CRT (Runtime do C/C++) não estava instalado. No entanto, o CRT ainda é necessário para aplicativos C# usando o WebView2. Para obter mais informações, confira o issue n.º 2117 no GitHub.
- Corrigido o problema em que aplicativos com MSIX de projeto único não geravam um arquivo .appinstaller. Para obter mais informações, confira o issue n.º 1821 no GitHub.
- Corrigido o problema em que os aplicativos da WinUI não davam suporte ao .NET 6
dotnet build
.
Versão 1.0.1
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs e suporte a várias janelas para a versão 1.0.
Correções de bug
- Corrigido o problema que fazia com que o MddBootstrapAutoinitializer não fosse compilado com o ImplicitUsings habilitado. Para obter mais informações, confira o issue n.º 1686 no GitHub.
- Corrigido o problema em que o foco no WebView2 seria perdido inesperadamente, causando problemas de entrada e seleção. Para obter mais informações, confira os issues n.º 5615 e n.º 5570 no GitHub.
- Corrigido o problema que fazia com que a barra de ferramentas no aplicativo no Visual Studio não fosse clicável ao usar uma barra de título personalizada em um aplicativo WinUI 3.
- Corrigido o problema que fazia com que o Layout do Snap não aparecesse ao usar uma barra de título personalizada em um aplicativo WinUI 3. Para obter mais informações, confira os issues n.º 6333 e n.º 6246 no GitHub.
- Corrigido o problema que fazia com que uma exceção ao definir a propriedade Window.ExtendsContentIntoTitleBar quando Window.SetTitlebar fosse chamado com um UIElement ainda carregando.
- Corrigido o problema em que os aplicativos MSIX de projeto único não davam suporte para
dotnet build
. - Corrigido o problema que fazia com que os aplicativos não empacotados não fossem instalados após a instalação de um aplicativo empacotado. Para obter mais informações, confira o issue n.º 1871 no GitHub.
- Corrigido o problema de redução do desempenho durante as operações de arrastar do mouse.
- Correção de falha ao chamar GetWindowIdFromWindow() em aplicativos não empacotados. Para obter mais informações, confira a discussão 1891 no GitHub.
As limitações e problemas conhecidos da versão 1.0 também se aplicam à versão 1.0.1.
Além disso, para aplicativos com barras de título personalizadas, fizemos alterações nesta versão (e corrigimos vários issues) que incluem correções na janela de vidro usada para operações de arrastar e soltar. A recomendação é usar os valores e comportamentos padrão (experimente!). Se a barra de título usou margens para que os botões de legenda padrão fossem interativos, recomendamos visualizar sua região de arrastar definindo a tela de fundo da barra de título como vermelha e ajustando as margens para estender a região de arrastar para os controles legenda.
Novos recursos
Estabilizamos e habilitamos a criação de várias janelas no mesmo thread em aplicativos da WinUI 3. Consulte o problema 5918 para obter mais informações.
Versão 1.0
As seções a seguir descrevem recursos novos e atualizados, limitações e problemas conhecidos para 1.0.
WinUI 3
A WinUI 3 é uma estrutura de UX (experiência do usuário) nativa para o SDK do Aplicativo Windows. Nesta versão, adicionamos vários novos recursos de SDK do Aplicativo Windows 0.8 e problemas estabilizados de versões 1.0 Versão Prévia.
Novos recursos e atualizações:
- Adicionamos novos controles (PipsPager, Expander, BreadcrumbBar) e atualizamos os controles existentes para refletir os estilos mais recentes do Windows da WinUI 2.6.
- O empacotamento MSIX de projeto único tem suporte na WinUI criando um novo aplicativo usando o "Aplicativo em Branco, Empacotado..." de segmentação.
- Agora, damos suporte à implantação de aplicativos WinUI 3 que não são empacotados nas versões 1809 e superiores do Windows. Confira Criar seu primeiro projeto da WinUI 3 para obter informações adicionais.
- Os projetos da WinUI 3 agora podem definir sua versão de destino como Windows 10, versão 1809. Anteriormente, eles só podiam ser definidos a partir da versão 1903.
- Na barra de ferramentas do aplicativo, Recarga Dinâmica e Live Visual Tree para aplicativos empacotados WinUI têm suporte no Visual Studio 2022 Preview 5 e GA.
Limitações importantes:
Problemas conhecidos para aplicativos da WinUI empacotados e não empacotados:
- Erro em tempo de execução em aplicativos C++ ou C# que fazem referência a um componente do Windows Runtime C++:
Para resolver, adicione o destino abaixo ao final do .vcxproj do componente do Windows Runtime:
<Target Name="GetPriIndexName"> <PropertyGroup> <!-- Winmd library targets use the default root namespace of the project for the App package name --> <PriIndexName Condition="'$(RootNamespace)' != ''">$(RootNamespace)</PriIndexName> <!-- If RootNamespace is empty fall back to TargetName --> <PriIndexName Condition="$(PriIndexName) == ''">$(TargetName)</PriIndexName> </PropertyGroup> </Target>
O erro esperado será semelhante ao erro de origem do WinRT - 0x80004005: 'Não é possível localizar o recurso de 'ms-appx:///BlankPage.xaml'.'.
- Erro em tempo de execução em aplicativos C++ ou C# que fazem referência a um componente do Windows Runtime C++:
Problemas conhecidos para aplicativos da WinUI com MSIX de projeto único (aplicativo em Branco, modelo Empacotado):
- Pacote ausente Publicar item de menu até reiniciar o Visual Studio: ao criar um novo aplicativo com MSIX de projeto único no Visual Studio 2019 e 2022 usando o modelo de projeto de aplicativo em branco, empacotado (WinUI 3 na Área de Trabalho), o comando para publicar o projeto não aparece no menu até que você feche e abra novamente o Visual Studio.
- Um aplicativo C# com MSIX de projeto único não será compilado sem o componente opcional "Ferramentas C++ (v14x) da Plataforma Universal do Windows" instalado. Confira Instalar ferramentas para o SDK do Aplicativo Windows para obter mais informações.
- Possível erro de runtime em um aplicativo com MSIX de projeto único que consome tipos definidos em um componente de Windows Runtime referenciado: para resolve, adicione manualmente entradas de classe ativáveis ao appxmanifest.xml.
- O erro esperado em aplicativos C# é "COMException: classe não registrada (0x80040154 (REGDB_E_CLASSNOTREG))".
- O erro esperado em aplicativos C++/WinRT é "winrt::hresult_class_not_registered".
Problemas conhecidos para aplicativos da WinUI 3 que não são empacotados (aplicativos não empacotados):
- Algumas APIs exigem identidade do pacote e não têm suporte em aplicativos não empacotados, como:
- ApplicationData
- StorageFile.GetFileFromApplicationUriAsync
- StorageFile.CreateStreamedFileFromUriAsync
- ApiInformation (sem suporte no Windows 10)
- Package.Current
- Qualquer API no namespace Windows.ApplicationModel.Resources
- Qualquer API no namespace Microsoft.Windows.ApplicationModel.Resources
- Algumas APIs exigem identidade do pacote e não têm suporte em aplicativos não empacotados, como:
Problemas conhecidos para empacotar e implantar aplicativos da WinUI:
- Não há suporte para o comando
Package
em aplicativos da WinUI com MSIX de projeto único (aplicativo em Branco, modelo Empacotado). Em vez disso, use o comandoPackage & Publish
para criar um pacote MSIX. - Para criar um pacote NuGet a partir de uma Biblioteca de Classes C# com o comando
Pack
, verifique se o ativoConfiguration
éRelease
. - Não há suporte para o comando
Pack
em Componentes de C++ do Windows Runtime para criar um pacote NuGet.
- Não há suporte para o comando
Para obter mais informações ou para começar a desenvolver com o WinUI, confira:
Windowing
O SDK do Aplicativo Windows fornece uma classe AppWindow que desenvolve a classe prévia Windows.UI.WindowManagement.AppWindow anterior e a disponibiliza para todos os aplicativos do Windows, incluindo Win32, WPF e WinForms.
Novos recursos
- AppWindow é uma API de janelas de alto nível que permite cenários de janelas fáceis de usar que se integram bem à experiência do usuário do Windows e a outros aplicativos. Representa uma abstração de alto nível de um contêiner gerenciado pelo sistema do conteúdo de um aplicativo. Esse é o contêiner no qual o conteúdo está hospedado e representa a entidade com a qual os usuários interagem quando redimensionam e movem seu aplicativo na tela. Para desenvolvedores familiarizados com o Win32, o AppWindow pode ser visto como uma abstração de alto nível do HWND.
- DisplayArea representa uma abstração de alto nível de um HMONITOR, segue os mesmos princípios que o AppWindow.
- DisplayAreaWatcher permite que um desenvolvedor observe as alterações na topologia de exibição e enumere as DisplayAreas definidas atualmente no sistema.
Para saber mais, confira Gerenciar janelas de aplicativos.
Entrada
Essas são as APIs de entrada que dão suporte à WinUI e fornecem uma superfície de API de nível inferior para os desenvolvedores alcançarem interações de entrada mais avançadas.
Novos recursos
- APIs de ponteiro: PointerPoint, PointerPointProperties e PointerEventArgs para dar suporte à recuperação de informações de evento de ponteiro com APIs de entrada do XAML.
- API InputPointerSource: representa um objeto registrado para relatar a entrada do ponteiro e fornece cursor de ponteiro e manipulação de eventos de entrada para a API do SwapChainPanel da XAML.
- API de cursor: permite que os desenvolvedores alterem o bitmap do cursor.
- API do GestureRecognizer: permite que os desenvolvedores reconheçam determinados gestos, como arrastar, segurar e clicar quando forem fornecidas informações de ponteiro.
Limitações importantes
- Todas as funções de fábrica estáticas do PointerPoint foram removidas: GetCurrentPoint, GetCurrentPointTransformed, GetIntermediatePoints e GetIntermediatePointsTransformed.
- O SDK do Aplicativo Windows não dá suporte à recuperação de objetos PointerPoint com IDs de ponteiro. Em vez disso, use a função membro PointerPointGetTransformedPoint para recuperar uma versão transformada de um objeto PointerPoint existente. Para pontos intermediários, use as funções membro PointerEventArgsGetIntermediatePoints e GetTransformedIntermediatePoints.
- O uso direto da API do SDK da plataforma Windows.UI.Core.CoreDragOperation não funcionará com os aplicativos da WinUI.
- As propriedades PointerPoint, RawPosition e ContactRectRaw foram removidas porque se referiam a valores não previstos, que eram os mesmos que os valores normais no sistema operacional. Em vez disso, use a Posição e o ContactRect. A previsão de ponteiro agora é tratada com o objeto da API do Microsoft.UI.Input.PointerPredictor.
Ciclo de vida do aplicativo
A maioria dos recursos do Ciclo de Vida do Aplicativo já existe na plataforma UWP e foi trazida para o SDK do Aplicativo Windows para uso por tipos de aplicativo da área de trabalho, especialmente aplicativos de Console não empacotados, aplicativos Win32, aplicativos Windows Forms e aplicativos WPF. A implementação de SDK do Aplicativo Windows desses recursos não pode ser usada em aplicativos UWP, pois há recursos equivalentes na própria plataforma UWP.
Importante
Se você estiver trabalhando em um aplicativo UWP, veja Migrar da UWP para o SDK do Aplicativo Windows.
Aplicativos que não sejam da UWP também podem ser empacotados em pacotes MSIX. Embora esses aplicativos possam usar alguns dos recursos do ciclo de vida do SDK do Aplicativo Windows, eles devem usar a abordagem de manifesto em que isso está disponível. Por exemplo, eles não podem usar as APIs de RegisterForXXXActivation do SDK do Aplicativo Windows e devem registrar-se para ativação avançada por meio do manifesto.
Todas as restrições para aplicativos empacotados também se aplicam a aplicativos da WinUI, que são empacotados e há considerações adicionais, conforme descrito abaixo.
Considerações importantes:
Ativação avançada: GetActivatedEventArgs
- Aplicativos não empacotados: totalmente utilizáveis.
- Aplicativos empacotados: utilizáveis, mas esses aplicativos também podem usar a plataforma
GetActivatedEventArgs
. Observe que a plataforma define Windows.ApplicationModel.AppInstance, enquanto o SDK do Aplicativo Windows define Microsoft.Windows.AppLifecycle.AppInstance. E, embora os aplicativos UWP possam usar asActivatedEventArgs
classes, comoFileActivatedEventArgs
eLaunchActivatedEventArgs
, os aplicativos que usam o recurso de AppLifecycle do SDK do Aplicativo Windows e devem usar as interfaces e não as classes (por exemplo,IFileActivatedEventArgs
,ILaunchActivatedEventArgs
e assim por diante). - Aplicativos da WinUi: o App.OnLaunched da WinUI recebe um Microsoft.UI.Xaml.LaunchActivatedEventArgs, enquanto a plataforma
GetActivatedEventArgs
retorna um Windows.ApplicationModel.IActivatedEventArgs e o WindowsAppSDKGetActivatedEventArgs
retorna um objeto Microsoft.Windows.AppLifecycle.AppActivationArguments que pode representar uma plataformaLaunchActivatedEventArgs
. - Para obter mais informações, confira Ativação avançada.
Registrar/cancelar o registro para ativação avançada
- Aplicativos não empacotados: totalmente utilizáveis.
- Aplicativos empacotados: não utilizável use o manifesto MSIX do aplicativo.
- Para obter mais informações, consulte Ativação avançada.
Instanciação única/múltipla
- Aplicativos não empacotados: totalmente utilizáveis.
- Aplicativos empacotados: totalmente utilizáveis.
- Aplicativos da WinUI: se um aplicativo quiser detectar outras instâncias e redirecionar uma ativação, ele deverá fazer isso o mais cedo possível e antes de inicializar qualquer janela etc. Para habilitar isso, o aplicativo deve definir DISABLE_XAML_GENERATED_MAIN e gravar um Main (C#) ou WinMain (C++) personalizado, em que ele pode fazer a detecção e o redirecionamento.
- RedirectActivationToAsync é uma chamada assíncrona e você não deve esperar em uma chamada assíncrona se o aplicativo estiver em execução em um STA. Para aplicativos da WinUI do Windows Forms e C#, declare Main como assíncrono, se necessário. Para aplicativos da WinUI C++ e WPF C#, não é possível declarar Main como assíncrono, portanto, em vez disso, mova a chamada de redirecionamento para outro thread para garantir que você não bloqueie o STA.
- Para saber mais, confira Instância de aplicativo.
Notificações de energia/estado
- Aplicativos não empacotados: totalmente utilizáveis.
- Aplicativos empacotados: totalmente utilizáveis.
- Para obter mais informações, confira Gerenciamento de Energia.
Problema conhecido:
- As associações de Tipo de Arquivo codificam incorretamente %1 como %251 ao definir o modelo de linha de comando do manipulador do Verbo, que falha em aplicativos do Win32 não empacotados. Edite manualmente o valor do Registro para ser %1 como uma solução alternativa parcial. Se o caminho do arquivo de destino tiver um espaço, ele ainda falhará e não haverá solução alternativa para esse cenário.
- Esses bugs de instância única/múltipla serão corrigidos em um próximo patch de manutenção:
- O redirecionamento appInstance não funciona quando compilado para x86
- Registrar uma chave, cancelá-la e registrá-la novamente faz com que o aplicativo falhe
DWriteCore
O DWriteCore é a implementação de SDK do Aplicativo Windows de DirectWrite, que é a API do DirectX para renderização de texto de alta qualidade, fontes de estrutura de tópicos independentes de resolução e suporte completo de texto e layout Unicode. O DWriteCore é um tipo de DirectWrite que é executado em versões do Windows até o Windows 10 versão 1809 (10.0; Build 17763), e permite o uso em multiplataforma.
Características DWriteCore contém todos os recursos de DirectWrite, com algumas exceções.
Limitações importantes
- O DWriteCore não contém os seguintes recursos de DirectWrite:
- Fontes por sessão
- Fontes de EUDC (caractere definido pelo usuário final)
- APIs de streaming de fonte
- O suporte à API de renderização de baixo nível é parcial.
- O DWriteCore não interopera com Direct2D, mas você pode usar o IDWriteGlyphRunAnalysis e o IDWriteBitmapRenderTarget.
Para obter mais informações, confira Visão geral do DWriteCore.
MRT Core
O MRT Core é uma versão simplificada do Sistema de Gerenciamento de Recursos do Windows moderno que é distribuído como parte do SDK do Aplicativo Windows.
Limitações importantes
- Em projetos do .NET, os arquivos de recurso copiados colados na pasta do projeto não serão indexados em F5 se o aplicativo já tiver sido criado. Como solução alternativa, recompile o aplicativo. Consulte o problema 1503 para obter mais informações.
- Em projetos do .NET, quando um arquivo de recurso é adicionado ao projeto usando a interface do usuário do Visual Studio, os arquivos podem não ser indexados por padrão. Consulte o problema 1786 para obter mais informações. Para contornar esse problema, remova as entradas abaixo no arquivo CSPROJ:
<ItemGroup> <Content Remove="<image file name>" /> </ItemGroup> <ItemGroup> <PRIResource Remove="<resw file name>" /> </ItemGroup>
- Para aplicativos WinUI C++ não empacotados, o URI do recurso não é criado corretamente. Para contornar esse problema, adicione o seguinte no vcxproj:
<!-- Add the following after <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> --> <PropertyGroup> <AppxPriInitialPath></AppxPriInitialPath> </PropertyGroup>
Para obter mais informações, consulte Gerenciar recursos com o MRT Core.
Implantação
Novos recursos e atualizações
- Inicialize automaticamente o SDK do Aplicativo Windows por meio da propriedade
WindowsPackageType project
para fazer upload do runtime do SDK do Aplicativo Windows e chamar as APIs de SDK do Aplicativo Windows. Consulte Criar seu primeiro projeto da WinUI 3 para obter instruções. - Os aplicativos não empacotados podem implantar o SDK do Aplicativo Windows integrando-se no instalador de SDK do Aplicativo Windows
.exe
autônomo em seu MSI ou programa de instalação existente. Para obter mais informações, consulte a Guia de implantação do SDK do Aplicativo Windows para aplicativos dependentes de estrutura empacotados com localização externa ou não empacotados. - Os aplicativos do .NET não empacotados também podem usar o empacotador do .NET para a API do Bootstrapper para criar dinamicamente uma dependência no pacote de estrutura do SDK do Aplicativo Windows em tempo de execução. Para obter mais informações sobre o wrapper do .NET, confira Biblioteca de wrapper do .NET.
- Os aplicativos empacotados podem usar a API de implantação para verificar e garantir que todos os pacotes necessários estejam instalados no computador. Para obter mais informações sobre como funciona a API de implantação, confira a Guia de implantação do SDK do Aplicativo Windows para aplicativos empacotados dependentes de estrutura.
Limitações importantes
- O empacotador do .NET para a API Bootstrapper destina-se apenas ao uso por aplicativos do .NET não empacotados para simplificar o acesso ao SDK do Aplicativo Windows.
- Somente aplicativos em pacote MSIX que são de confiança total ou têm a funcionalidade restrita packageManagement têm a permissão para usar a API de implantação para instalar as dependências do pacote Main e Singleton. O suporte para aplicativos empacotados de confiança parcial será disponibilizado em versões posteriores.
- Ao testar F5 um aplicativo x86 que usa o método DeploymentManager.Initialize em um sistema x64, verifique se a estrutura x64 é instalada pela primeira vez executando o WindowsAppRuntimeInstall.exe. Caso contrário, você encontrará um erro de NOT_FOUND devido ao Visual Studio não implantar a estrutura x64, que normalmente ocorre por meio da implantação da Store ou do sideload.
Outras limitações e problemas conhecidos
Sem suporte para qualquer configuração de build de CPU: ao adicionar o SDK do Aplicativo Windows a um aplicativo ou componente do .NET existente que dê suporte a Qualquer CPU, especifique a arquitetura desejada:
x86
,x64
ouarm64
.Atualizar do .NET 5 para o .NET 6: ao atualizar na interface do usuário do Visual Studio, é possível encontrar erros de build. Como solução alternativa, atualize manualmente o arquivo de projeto
TargetFrameworkPackage
para o seguinte:<TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
O aplicativo MSIX de projeto único em C# não será compilado se as Ferramentas UWP do C++ não estiverem instaladas. Se você tiver um projeto MSIX de projeto único em C#, precisará instalar o componente opcional Ferramentas C++ (v14x) da Plataforma Universal do Windows.
O VSIX de linguagem subsequente não é instalado no Visual Studio 2019 quando várias versões do Visual Studio 2019 são instaladas. Caso tenha várias versões do Visual Studio 2019 instaladas (por exemplo, Versão e Versão Prévia) e, em seguida, instalar o VSIX do SDK do Aplicativo Windows para C++ e C#, a segunda instalação falhará. Para resolver, desinstale as Ferramentas de Empacotamento MSIX de projeto único para o Visual Studio 2019 após o primeiro VSIX de idioma. Exiba este comentário para obter informações adicionais sobre esse problema.
Uma alternativa ao DispatcherQueue.TryEnqueue (para retomar a execução no thread da fila do dispatcher) é usar a função auxiliar resume_foreground na WIL (Biblioteca de Implementação do Windows):
- Adicione uma referência ao seu projeto ao pacote NuGet Microsoft.Windows.ImplementationLibrary.
- Adicione
#include <wil/cppwinrt_helpers.h>
ao seupch.h
. - Adicione
#include <winrt/Microsoft.UI.Dispatching.h>
ao seupch.h
. - Agora
co_await wil::resume_foreground(your_dispatcherqueue);
.
Versão 0.8
A versão mais recente disponível da linhagem 0.8.x do canal estável do SDK do Aplicativo Windows é a versão 0.8.12.
Observação
O SDK do Aplicativo Windows anteriormente era conhecido pelo codinome Project Reunion. Alguns ativos do SDK na versão 0.8 e anteriores ainda usam o nome do código. Algumas áreas da documentação ainda usarão Project Reunion ao se referir a um ativo existente ou uma versão anterior especificada.
Versão 0.8.12
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 0.8.0.
Observação
Para desenvolvedores do C#, uma das seguintes versões do SDK do .NET é necessária: 5.0.213, 5.0.407, 6.0.104, 6.0.202 (ou posterior). Para atualizar sua versão do SDK do .NET, visite os Downloads do .NET ou atualize para a última versão do Visual Studio. Sem a versão necessária do SDK do .NET, ao atualizar o pacote NuGet, você visualizará um erro como: "Esta versão do WindowsAppSDK requer o WinRT.Runtime.dll versão 1.6 ou superior".
Correções de bug:
- Corrigido o problema em que os aplicativos com SwapChainPanel ou WebView2 falhavam de forma imprevisível devido a uma violação de acesso.
Versão 0.8.11
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 0.8.0.
Observação
Para desenvolvedores do C#, uma das seguintes versões do SDK do .NET é necessária: 5.0.213, 5.0.407, 6.0.104, 6.0.202 (ou posterior). Para atualizar sua versão do SDK do .NET, visite os Downloads do .NET ou atualize para a última versão do Visual Studio. Sem a versão necessária do SDK do .NET, ao atualizar o pacote NuGet, você visualizará um erro como: "Esta versão do WindowsAppSDK requer o WinRT.Runtime.dll versão 1.6 ou superior".
Correções de bug:
- Correção da regressão, fazendo com que o evento de foco perdido seja acionado ao selecionar texto usando o mouse.
Versão 0.8.10
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 0.8.0.
Observação
Para desenvolvedores do C#, uma das seguintes versões do SDK do .NET é necessária: 5.0.213, 5.0.407, 6.0.104, 6.0.202 (ou posterior). Para atualizar sua versão do SDK do .NET, visite os Downloads do .NET ou atualize para a última versão do Visual Studio. Sem a versão necessária do SDK do .NET, ao atualizar o pacote NuGet, você visualizará um erro como: "Esta versão do WindowsAppSDK requer o WinRT.Runtime.dll versão 1.6 ou superior".
Correções de bug:
- Corrigido os problemas que faziam com que os aplicativos falhassem às vezes durante uma operação de arrastar e soltar.
Observação
O SDK do Aplicativo Windows 0.8.9 não foi lançado. A versão lançada diretamente após a versão 0.8.8 é 0.8.10.
Versão 0.8.8
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções importantes de bugs para a versão 0.8.0.
Observação
Para desenvolvedores do C#, uma das seguintes versões do SDK do .NET (ou posterior) é necessária: 6.0.202, 6.0.104, 5.0.407 e 5.0.213. Para atualizar sua versão do SDK do .NET, visite os Downloads do .NET ou atualize para a última versão do Visual Studio. Sem a versão necessária do SDK do .NET, ao atualizar o pacote NuGet, você visualizará um erro como: "Esta versão do WindowsAppSDK requer o WinRT.Runtime.dll versão 1.6 ou superior".
Correções de bug:
- Correção de problemas de entrada por toque no TextBox em relação ao teclado virtual e à interação geral. Esses problemas também afetaram os atalhos de teclado. Para obter mais informações, consulte o problema 6291 no GitHub.
- Corrigido o problema em que uma janela do aplicativo às vezes era mostrada como inativa quando ativa.
- Corrigido o problema de desempenho causado pelo UIA (Automação da Interface do Usuário) em execução em processos externos.
- Corrigido o problema de estabilidade do aplicativo com a entrada da caneta.
- Corrigido o problema em que a renderização de ícones png em um menu é drasticamente atrasada devido ao UIA.
Versão 0.8.7
Esta é uma versão de manutenção do SDK do Aplicativo Windows que inclui várias atualizações de desempenho para aplicativos C#/.NET. Para atualizar para esta versão, referencie a versão mais recente do pacote do SDK do Windows. Para fazer isso, adicione a propriedade <WindowsSdkPackageVersion>10.0.<sdk_version>.24</WindowsSdkPackageVersion>
ao arquivo .csproj
com a versão do SDK que seu aplicativo está direcionando da propriedade TargetFramework
. Por exemplo:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<WindowsSdkPackageVersion>10.0.19041.24</WindowsSdkPackageVersion>
<PropertyGroup>
...
Esta versão da projeção do SDK do Windows estará disponível em uma próxima versão de manutenção do .NET 6. Depois que a atualização do SDK do .NET estiver disponível, remova a propriedade <WindowsSdkPackageVersion>
do arquivo de projeto.
Se você não definir essa propriedade, visualizará um erro como: "Error: This version of Project Reunion requires WinRT.Runtime.dll version 1.6 or greater."
Versão 0.8.6
Esta é uma versão de manutenção do SDK do Aplicativo Windows que inclui várias melhorias de desempenho para aplicativos C#/.NET para a versão 0.8.0.
Para atualizar para esta versão do SDK do Aplicativo Windows, você precisará ter a atualização de dezembro do SDK do .NET mais recente instalada (confira Fazer download do .NET e o .NET 5 atingirá o fim do suporte em 10 de maio de 2022). Caso não tenha a versão mínima necessária do SDK do .NET instalada, verá um erro como "Error: This version of Project Reunion requires WinRT.Runtime.dll version 1.4 or greater."
Correções de bugs
Para obter uma lista detalhada das melhorias de desempenho, confira as notas de versão do C#/WinRT 1.4.1.
Versão 0.8.5
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções mais importantes de bugs para a versão 0.8.0.
Correções de bug
- Corrigido o problema que estava causando falha nos aplicativos da WinUI usando a entrada de ponteiro .
- Corrigido o problema que fazia com que os botões da barra de título (mínimo, máximo, fechar) não tivessem cantos arredondados em Windows 11.
- Corrigido o problema que fazia com que as opções de layout de redimensionamento não aparecessem ao passar o mouse sobre o botão maximizar/restaurar no Windows 11.
- Corrigido o problema que causava uma exceção de falha ao criar um objeto PointCollection . Para obter mais informações, confira o issue n.º 971 no GitHub.
As limitações e os problemas conhecidos da versão 0.8 também se aplicam à versão 0.8.5, a menos que marcados de outra forma na seção abaixo.
Versão 0.8.4
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções mais importantes de bugs para a versão 0.8.0.
Correções de bug
- Correções para barras de título personalizadas para que o ContentDialog não as cubra e os botões da barra de título sejam arredondados.
- Correção de uma falha no processamento de imagens quando a escala de exibição é alterada.
- Corrige bugs de recorte em que a interface do usuário desaparece ou é recortada incorretamente
As limitações e os problemas conhecidos da versão 0.8 também se aplicam à versão 0.8.4, a menos que marcados de outra forma na seção abaixo.
Versão 0.8.3
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções mais importantes de bugs para a versão 0.8.0.
Correções de bug
O foco do teclado estava sendo perdido quando uma janela foi minimizada e restaurada, exigindo um clique do mouse para restaurar o foco.
As limitações e os problemas conhecidos da versão 0.8 também se aplicam à versão 0.8.3, a menos que marcados de outra forma na seção abaixo.
Versão 0.8.2
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções mais importantes de bugs para a versão 0.8.0.
Correções de bug
- O SDK do Aplicativo Windows e a WinUI 3 agora têm suporte no Visual Studio 2022 Versão Prévia 2 e posterior.
- Para os aplicativos do .NET, é possível receber o seguinte erro ao passar uma matriz de enumerações:
Object contains non-primitive or non-blittable data.
- Gravar usando o painel de manuscrito dentro de uma caixa de texto causa uma falha
- Ícones/imagens sempre são carregados no valor de escala de 100% em vez de com base no valor de escala do monitor
- A coleta de lixo do EventSource<T> causa falha subsequente em cancelar a assinatura de manipuladores (confira o issue no GitHub para obter mais detalhes)
- Correção de segurança – confira CVE-2021-34533 para obter mais detalhes.
- SwapChainPanel.CompositionScaleChanged às vezes retornava valores incorretos de CompositionScale depois de alterar a escala de exibição
As limitações e os problemas conhecidos da versão 0.8 também se aplicam à versão 0.8.2, a menos que marcados de outra forma na seção abaixo.
Versão 0.8.1
Essa é uma versão de manutenção do SDK do Aplicativo Windows que inclui algumas correções importantes de bugs para a versão 0.8.0.
Correções de bug
- O SDK do Aplicativo Windows não pode ser executado no build mais recente do Windows Insider
- Falha em EditableComboBox ao inserir um valor que não aparece na lista suspensa
- O WebView2 não permite que o usuário faça a guia depois que o foco tiver sido recebido
- O namespace Windows.Foundation.Metadata.DefaultOverload totalmente qualificado no código gerado pela WinUI para evitar ambiguidade de namespace
- Isso corrige o bug n.º 5108.
- Correção de segurança – confira CVE-2021-34489 para obter mais detalhes.
As limitações e os problemas conhecidos da versão 0.8 também se aplicam à versão 0.8.1, a menos que marcados de outra forma na seção abaixo.
Versão 0.8.0 Estável
Novos recursos e atualizações
Esta versão dá suporte a todos os recursos estáveis do canal.
WinUI 3
Esta versão inclui muitas correções de bug e estabilização aprimorada na WinUI 3. Essas são todas as novas alterações na WinUI 3 desde o lançamento da WinUI 3 – Project Reunion 0.5:
O controle Dinâmico foi adicionado novamente e agora pode ser usado em qualquer aplicativo WinUI 3.
Todas as correções de bug do Project Reunion v0.5.5, v0.5.6 e v0.5.7 estão incluídas nesta versão.
Novas correções de bug, incluindo:
- O aplicativo tinha uma falha quando o usuário clicava com o botão direito do mouse em TextBox
- NavigationView causava falha na UWP, no Reunion 0.5 Versão Prévia
- ProgressBar não mostra a diferença entre as opções Pausa e Erro
- Falha no RichEditBox ao copiar/colar/alterar o estilo de texto
- Os botões de legenda do Windows estão no local errado quando SetTitleBar não está definido ou está definido como nulo
Para obter a lista completa de bugs abordados nesta versão, confira nosso repositório do GitHub.
A API
ColorHelper.ToDisplayName
não está mais disponível.As seguintes tipos foram removidos:
Microsoft.Graphics.IGeometrySource2D
Microsoft.Graphics.IGeometrySource2DInterop
Em vez disso, use
Windows.Graphics.IGeometrySource2D
eWindows.Graphics.IGeometrySource2DInterop
.Todos os tipos no namespace
Microsoft.System
foram movidos para o namespaceMicrosoft.UI.Dispatching
, incluindo a classe DispatcherQueue.A propriedade
AcrylicBrush.BackgroundSource
foi removida, poisHostBackdrop
não há suporte como umBackgroundSource
na WinUI 3.
Para obter mais informações sobre o WinUI, confira Biblioteca do WinUI (Windows UI 3).
Para visualizar os controles e recursos da WinUI 3 em ação, clone e crie a Galeria de aplicativo WinUI 3 do GitHub ou fazer download do aplicativo no Microsoft Store.
Para começar a desenvolver com o WinUI, confira os seguintes artigos:
- Modelos da WinUI 3 no Visual Studio
- Criar seu primeiro projeto da WinUI 3
- Compilar um aplicativo em C# do .NET com interoperabilidade do WinUI 3 e do Win32
- Referência de API da WinUI 3
DWriteCore
Esta versão do DWriteCore inclui os seguintes recursos novos e atualizados. O DWriteCore é introduzido e descrito na visão geral de DWriteCore.
- DWriteCore agora tem suporte para sublinhado – confira IDWriteTextLayout::GetUnderline e IDWriteTextLayout::SetUnderline.
- Suporte para tachado — confira IDWriteTextLayout::GetStrikethrough e IDWriteTextLayout::SetStrikethrough.
- Suporte para texto vertical por meio de IDWriteTextLayout – confira Texto vertical.
- Todos os métodos das interfaces IDWriteTextAnalyzer e IDWriteTextAnalyzer1 são implementados.
- A função livre DWriteCoreCreateFactory cria um objeto de fábrica usado para a criação subsequente de objetos DWriteCore individuais.
Observação
DWriteCoreCreateFactory é funcionalmente igual à função DWriteCreateFactory exportada pela versão do sistema de DirectWrite. A função DWriteCore tem um nome diferente para evitar ambiguidade no caso de você vincular DWriteCore.lib
e DWrite.lib
.
Para referência de API DWriteCore e DirectWrite, confira a Referência de API do DWriteCore e Referência de API do DirectWrite.
MRTCore
- A Ação de Build para recursos é definida automaticamente ao adicionar o recurso ao projeto, reduzindo a necessidade de configuração manual do projeto.
Limitações
No momento, não há suporte para esta versão no Canal de Desenvolvimento do Programa Windows Insider. Isso foi corrigido na versão 0.8.1.
Aplicativos da área de trabalho (área de trabalho C# ou C++): esta versão tem suporte apenas para uso em aplicativos da área de trabalho (C++ ou C#) empacotados usando o MSIX. Para usar o SDK do Aplicativo Windows em aplicativos de área de trabalho não empacotados, use o canal de versão experimental.
Importante
Se você estiver trabalhando em um aplicativo UWP, veja Migrar da UWP para o SDK do Aplicativo Windows.
Problemas conhecidos
As ferramentas da WinUI 3, como Árvore Visual Dinâmica, Live Explorador de Propriedades Dinâmicas e Recarga Dinâmica na versão 0.8 e posterior, exigem o Visual Studio 2019 16.11 Versão prévia 3 e posterior.
Atualmente, os aplicativos que usam a WinUI 3 e o SDK do Aplicativo Windows 0.8 não podem usar bibliotecas de classes que usam o Project Reunion 0.5. Atualize as bibliotecas de classes para usar o SDK do Aplicativo Windows 0.8.
Os aplicativos do .NET devem ter como destino o build 18362 ou posterior: o TFM deve ser definido como net6.0-windows10.0.18362 ou posterior e o projeto de empacotamento deve ser definido como 18362 ou posterior. Para obter mais informações, confira o issue n.º 921 do GitHub.
Encontrar uma falha ao alternar com frequência entre o modo claro e escuro.
Para os aplicativos do .NET, é possível receber o seguinte erro ao passar uma matriz de enumerações:
Object contains non-primitive or non-blittable data.
Isso foi corrigido na versão 0.8.2.Para aplicativos do .NET, atualmente não há como recusar a indexação de uma imagem como um recurso de aplicativo usando a interface do usuário do Visual Studio. Para contornar isso, adicione um Directory.Build.targets (confira Personalizar seu build – Visual Studio para obter instruções) ao projeto e remova as imagens da seguinte maneira:
Para remover imagens específicas (observe que o caminho relativo é necessário):
<Project> <ItemGroup> <Content Remove="..\Bitmap1.bmp" /> </ItemGroup> </Project>
Para remover imagens com base em metadados:
<Project> <ItemGroup> <Content Remove="@(None->WithMetadataValue('Pack','true'))" /> </ItemGroup> </Project>
Uma correção para esse problema está planejada para uma versão futura – nesse ponto, as soluções alternativas acima não serão mais necessárias.
Versão 0.5
A versão mais recente disponível da linhagem 0.5.x do canal estável do SDK do Aplicativo Windows é a versão 0.5.9.
Novos recursos e atualizações
Esta versão dá suporte a todos os recursos estáveis do canal.
Limitações e problemas conhecidos
Esta versão tem as seguintes limitações e problemas conhecidos:
- Aplicativos da área de trabalho (área de trabalho C# ou C++): esta versão tem suporte apenas para uso em aplicativos da área de trabalho (C++ ou C#) empacotados usando o MSIX. Para usar o SDK do Aplicativo Windows em aplicativos de área de trabalho não empacotados, use o canal de versão experimental.
- Os aplicativos do .NET devem ter como destino o build 18362 ou posterior: o TFM deve ser definido como
net6.0-windows10.0.18362
ou posterior e o projeto de empacotamento<TargetPlatformVersion>
deve ser definido como 18362 ou posterior. Para obter mais informações, consulte o problema conhecido no GitHub.
Importante
Se você estiver trabalhando em um aplicativo UWP, veja Migrar da UWP para o SDK do Aplicativo Windows.
Tópicos relacionados
Windows developer
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de