Notas sobre a versão de canal estável mais recente 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.
Links importantes:
- Caso queira atualizar um aplicativo existente de uma versão mais antiga do SDK do Aplicativo Windows para uma versão mais recente, confira Atualizar projetos existentes para a versão mais recente do SDK do Aplicativo Windows.
Arquivo de notas da versão de canal estável:
- Notas sobre a versão do canal estável para o SDK do Aplicativo Windows 1.5
- Notas sobre a versão do canal estável para o SDK do Aplicativo Windows 1.4
- Notas sobre a versão do canal estável para o SDK do Aplicativo Windows 1.3
- Notas sobre a versão do canal estável para o SDK do Aplicativo Windows 1.2
- Notas sobre a versão do canal estável para o SDK do Aplicativo Windows 1.1
- Notas sobre a versão do canal estável para o SDK do Aplicativo Windows 1.0
- Notas sobre a versão do canal estável para o SDK do Aplicativo Windows 0.8
- Notas sobre a versão do canal estável para o SDK do Aplicativo Windows 0.5
Downloads para o SDK do Aplicativo Windows
Observação
As extensões do Visual Studio do SDK de 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.6.1 (1.6.240923002)
Esta é uma versão de manutenção do SDK do Aplicativo Windows que inclui correções de bugs críticas para a versão 1.6.
- Corrigida uma falha ao usar FocusVisualKind.Reveal(). Para obter mais informações, consulte o problema #9966 do GitHub.
- Corrigidas exceções C++ ruidosas do Bcp47Langs.dll. Para obter mais informações, consulte o problema #4691 do GitHub. Observe que essa correção remove a sincronização com
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride
o . - Corrigido um problema em que um evento extra
Unloaded
era gerado imediatamente após mostrar umContentDialog
. Para obter mais informações, consulte o problema #8402 do GitHub. - Corrigido um problema em que um menu CommandBar poderia ter aberto incorretamente mesmo quando havia espaço para ele abrir.
- Corrigidos alguns problemas em que a entrada para
InputNonClientPointerSource
regiões não era tratada corretamente quando a janela de nível superior estava sendo executada no modo da direita para a esquerda. - Corrigida a verificação em tempo de compilação para a versão da estrutura do SDK do Windows para lidar com o nome da estrutura ligeiramente diferente usado para o .NET 9.
Versão 1.6
As seções a seguir descrevem recursos novos e atualizados e problemas conhecidos da versão 1.6.
Em um aplicativo SDK do Aplicativo Windows 1.5 existente, você pode atualizar seu pacote Nuget para 1.6.240829007 (consulte 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.
Alterações de projeto necessárias para 1.6
Alterações no projeto C++
Ao atualizar um projeto C++ para 1.6, você precisará adicionar uma referência de projeto ao Microsoft.Web.WebView2
pacote. Se você atualizar por meio do Gerenciador de Pacotes NuGet no Visual Studio, essa dependência será adicionada para você.
Alterações no projeto C#
Na versão 1.6, SDK do Aplicativo Windows aplicativos gerenciados exigem Microsoft.Windows.SDK.NET.Ref *.*.*.38
ou posterior, que pode ser especificado por meio de WindowsSdkPackageVersion em seu csproj
arquivo. Por exemplo:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<WindowsSdkPackageVersion>10.0.22621.38</WindowsSdkPackageVersion>
<PropertyGroup>
...
Além disso, SDK do Aplicativo Windows aplicativos gerenciados devem ser atualizados para Microsoft.Windows.CsWinRT 2.1.1
(ou posterior).
Observação
Essas referências manuais não serão mais necessárias quando a próxima atualização de manutenção do SDK do .NET for lançada.
Suporte a AOT nativo
A propriedade do projeto .NET PublishAot
agora tem suporte para compilação nativa antecipada. Para obter detalhes sobre o AOT nativo, consulte Implantação do AOT nativo. Como o AOT se baseia no suporte ao corte, muitas das diretrizes relacionadas ao corte a seguir também se aplicam ao AOT.
Para PublishAot
suporte e suporte de corte, além das alterações do projeto C# descritas na seção anterior, você também precisará de uma referência de pacote para Microsoft.Windows.CsWinRT 2.1.1
(ou posterior) para habilitar o gerador de origem desse pacote até que a próxima atualização de manutenção do SDK do .NET seja lançada, quando ela não será mais necessária.
Para obter mais informações, consulte o documento de suporte ao CsWinRT Trimming/AOT e as Notas da versão do CsWinRT 2.1.1.
Como o SDK do Aplicativo Windows invoca destinos de publicação durante a implantação do F5, recomendamos habilitar PublishAot
no momento da restauração do NuGet adicionando isso ao csproj
arquivo:
<PublishAot>true</PublishAot>
Resolvendo problemas de AOT
Nesta versão, o desenvolvedor é responsável por garantir que todos os tipos estejam enraizados corretamente para evitar o corte (como com destinos baseados em {Binding}
reflexão). Versões posteriores aprimorarão o C#/WinRT e o Compilador XAML para automatizar o enraizamento sempre que possível, alertar os desenvolvedores sobre riscos de corte e fornecer mecanismos para resolver.
Classes parciais
O C#/WinRT também inclui PublishAot
suporte na versão 2.1.1. Para habilitar uma classe para publicação AOT com C#/WinRT, ela deve primeiro ser marcada partial
como . Isso permite que o analisador de origem AOT do C#/WinRT atribua as classes para análise estática. Somente as classes (que contêm métodos, os destinos de corte) exigem esse atributo.
Erro de código inseguro
O gerador de unsafe
origem CsWinRT pode gerar código que usa o . Se você encontrar esse erro durante a compilação ou um aviso de diagnóstico para ele (CS0227 para "Código não seguro só pode aparecer se compilar com /unsafe"), defina EnableUnsafeBlocks como true. Para obter mais informações, consulte o problema do GitHub CsWinRT #1721.
WebView2 ainda não compatível com AOT
As projeções do WebView2 na Microsoft.Web.WebView2
versão do pacote 1.0.2651.64 ainda não são compatíveis com AOT. Isso será corrigido em uma versão futura do Microsoft.Web.WebView2
pacote, que você pode referenciar em seu projeto.
Técnicas sem reflexão
Para habilitar a compatibilidade AOT, as técnicas baseadas em reflexão devem ser substituídas por serialização tipada estaticamente, AppContext.BaseDirectory, typeof() etc. Para obter detalhes, consulte Introdução aos avisos de corte.
Tipos de enraizamento
Até que o suporte completo seja {Binding}
implementado, os tipos podem ser preservados do corte da seguinte maneira:
Dado o assembly A
que consome o projeto P
com o tipo T
no namespaceN
, que é referenciado apenas dinamicamente (normalmente cortado), T
pode ser preservado por meio de:
P.csproj
:
<ItemGroup>
<TrimmerRootDescriptor Include="ILLink.Descriptors.xml" />
</ItemGroup>
ILLink.Descriptors.xml
:
<?xml version="1.0" encoding="utf-8"?>
<linker>
<assembly fullname="A">
<type fullname="N.T" preserve="all" />
</assembly>
</linker>
Para obter a sintaxe completa da expressão XML do descritor raiz, consulte Descritores raiz.
Observação
Os pacotes de dependência que ainda não adotaram o suporte AOT podem apresentar problemas de tempo de execução.
Controle de versão do WebView2 desacoplado
O SDK do Aplicativo Windows agora consome o SDK do Edge WebView2 como uma referência NuGet em vez de inserir uma versão codificada do SDK do Edge WebView2. O novo modelo permite que os aplicativos escolham uma versão mais recente do Microsoft.Web.WebView2
pacote em vez de se limitarem à versão com a qual o SDK do Aplicativo Windows foi criado. O novo modelo também permite que os aplicativos façam referência a pacotes NuGet que também fazem referência ao SDK do Edge WebView2. Para obter mais informações, consulte o problema #5689 do GitHub.
Novas APIs de implantação de pacotes
A API de Gerenciamento de Pacotes recebeu vários aprimoramentos, incluindo Is*ReadyOrNewerAvailable*(), EnsureReadyOptions.RegisterNewerIfAvailable, Is*Provisioned*(), IsPackageRegistrationPending() e várias correções de bugs. Consulte PackageManagement.md e Pull Request #4453 para obter mais detalhes.
Remoção aprimorada da guia TabView
TabView
Suporta um novo CanTearOutTabs
modo que fornece uma experiência aprimorada para arrastar guias e arrastar para uma nova janela. Quando essa nova opção está ativada, arrastar a guia é muito parecido com a experiência de arrastar a guia no Edge e no Chrome, onde uma nova janela é criada imediatamente durante o arrasto, permitindo que o usuário a arraste para a borda da tela para maximizar ou ajustar a janela em um movimento suave. Essa implementação também não usa APIs de arrastar e soltar, portanto, não é afetada por nenhuma limitação nessas APIs. Notavelmente, a remoção de tabulação é suportada em processos executados com privilégios elevados como Administrador.
Outras alterações importantes
- Adicionada uma nova
ColorHelper.ToDisplayName()
API, preenchendo essa lacuna da UWP. - Adicionada uma nova
Microsoft.Windows.Globalization.ApplicationLanguages
classe, que inclui um novoPrimaryLanguageOverride
recurso. Para obter mais informações, consulte o problema #4523 do GitHub. - Não lacrado
ItemsWrapGrid
. Esta deve ser uma mudança compatível com versões anteriores. PipsPager
Suporta um novo modo em que pode ser encapsulado entre o primeiro e o último item.
RatingControl
agora é mais personalizável, movendo algumas propriedades de estilo codificadas para recursos de tema. Isso permite que os aplicativos substituam esses valores para personalizar melhor a aparência do RatingControl.
- O WinUI 3 foi alterado para o modelo tipográfico para seleção de fonte em vez do modelo herdado de peso/alongamento/estilo. O modelo tipográfico é necessário para algumas fontes mais recentes, incluindo Segoe UI Variable, e permite recursos de fonte aprimorados. Algumas fontes mais antigas que dependem do modelo de peso/esticar/estilo para seleção podem não ser encontradas com o modelo tipográfico.
Problemas conhecidos
- Se o depurador estiver definido para interromper em todas as exceções do C++, ele será interrompido em algumas exceções barulhentas na inicialização no código BCP47 (Globalização do Windows). Para obter mais informações, consulte o problema #4691 do GitHub.
- Os pacotes de biblioteca de componentes que fazem referência ao pacote WinAppSDK 1.6 não obterão corretamente o conteúdo do pacote WebView2 referenciado. Para obter mais informações, consulte WebView2Feedback #4743. Uma solução alternativa é adicionar uma referência direta ao
Microsoft.Web.WebView2
pacote quando necessário. - Às vezes, os aplicativos compilados com AOT nativo podem ter um problema de travamento após a navegação na página devido a uma condição de corrida no thread GC do runtime do .NET. Para obter mais informações, consulte .NET issue #104582.
- A versão inicial da versão 1.6.0 introduziu um problema com uma de nossas dependências que esperamos que seja resolvido em uma versão futura do SDK do .NET. Se você encontrar um erro com a versão da referência do Microsoft.Windows.SDK.NET, precisará referenciar explicitamente a versão do SDK do .NET especificada pela mensagem de erro. Por exemplo, se o erro disser que você precisa da versão 10.0.19041.38, adicione o seguinte ao seu
.csproj
arquivo:<WindowsSdkPackageVersion>10.0.19041.38</WindowsSdkPackageVersion>
.
Correções de bugs
- Corrigida uma falha ao definir
InfoBar.IsOpen
em .xaml. Para obter mais informações, consulte o problema #8391 do GitHub. - Corrigido um problema em que os elementos HTML perdiam a captura do ponteiro quando o mouse se movia para fora dos
WebView2
limites. Para obter mais informações, consulte o problema #8677 do GitHub. - Corrigido um problema em que arrastar e soltar em um submenu com
ShouldConstrainToRootBounds=false
não funcionava. Para obter mais informações, consulte o problema #9276 do GitHub. - Corrigido um problema em que
ms-appx://
as referências não funcionavam quandoPublishSingleFile
ativado. Para obter mais informações, consulte o problema #9468 do GitHub. - Corrigido um problema em que os símbolos do depurador não funcionavam corretamente para alguns binários. Para obter mais informações, consulte o problema #4633 do GitHub.
- Corrigido um possível travamento ao subclassificar
NavigationView
. - Corrigido um problema em que as bordas da tabela em um
RichEditBox
não eram apagadas corretamente ao rolar ou reduzir o tamanho da tabela. - Corrigido um problema em que os submenus tinham um plano de
MediaTransportControls
fundo totalmente transparente. - Corrigido um problema em que arrastar para um WebView2 falhava ou soltava no local errado em fatores de escala de exibição diferentes de 100% ou quando o dimensionamento de texto do sistema estava habilitado.
- Corrigido um problema em que
TextBox
/RichEditBox
não anunciava às ferramentas de acessibilidade quando a entrada era bloqueada devido a estar noMaxLength
limite. - Corrigidos alguns problemas relacionados ao manuseio de cenários personalizados da barra de título. Para obter mais informações, consulte os problemas do GitHub #7629, #9670, #9709 e #8431.
- Corrigido um problema em que
InfoBadge
o ícone não estava visível. Para obter mais informações, consulte o problema #8176 do GitHub. - Corrigido um problema com ícones às vezes exibidos na posição errada em
CommandBarFlyout
. Para obter mais informações, confira o issue n.º 9409 do GitHub. - Corrigido um problema com o foco do teclado nos menus ao abrir ou fechar um submenu. Para obter mais informações, consulte o problema #9519 do GitHub.
- Corrigido um problema com
TreeView
o uso do estado incorretoIsExpanded
ao reciclar itens. Para obter mais informações, consulte o problema #9549 do GitHub. - Corrigido um problema ao usar uma associação ElementName em um
ItemsRepeater.ItemTemplate
. Para obter mais informações, consulte o problema #9715 do GitHub. - Corrigido um problema com o primeiro item às
ItemsRepeater
vezes com uma posição incorreta. Para obter mais informações, consulte o problema #9743 do GitHub. - Corrigido um problema com
InputNonClientPointerSource
às vezes interrompendo a entrada nos botões min/max/close. Para obter mais informações, consulte o problema #9749 do GitHub. - Corrigido um erro de compilação ao usar Microsoft.UI.Interop.h com clang-cl. Para obter mais informações, consulte o problema #9771 do GitHub.
- Corrigido um problema em que o
CharacterReceived
evento não funcionava no/ComboBox
TextBox
. Para obter mais informações, consulte o problema #9786 do GitHub. - Corrigido um problema em que eventos duplicados
KeyUp
eram gerados para teclas de seta e tab. Para obter mais informações, consulte o problema #9399 do GitHub. - Corrigido um problema em que o
PowerManager.SystemSuspendStatusChanged
evento era inutilizável para obter oSystemSuspendStatus
. Para obter mais informações, consulte o problema #2833 do GitHub. - Corrigido um problema em que o foco inicial do teclado não era dado corretamente a um
WebView2
quando esse era o único controle na janela. - Corrigido um problema ao usar
ExtendsContentIntoTitleBar=true
em que os botões Mín/Máx/Fechar não apareciam corretamente na Automação da Interface do Usuário, o que impedia o Acesso por Voz de mostrar números para esses botões. - Corrigido um problema em que um aplicativo pode falhar em uma verificação de bloqueio devido a uma reentrância inesperada.
- Corrigido um problema em que
Hyperlink
as cores não eram atualizadas corretamente ao alternar para um tema de alto contraste. - Corrigido um problema em que alterar a coleção de a
ListView
em uma janela de plano de fundo poderia mover incorretamente essa janela para o primeiro plano e obter o foco. - Corrigido um problema em que chamar
ItemsRepeater.StartBringIntoView
às vezes fazia com que os itens desaparecessem. - Corrigido um problema em que tocar e arrastar em um
Button
em aScrollViewer
o deixava em um estado pressionado. - Atualização do IntelliSense, que estava faltando informações para muitos tipos e membros mais recentes.
- Corrigido um problema em que clicar em uma área vazia de um
ScrollViewer
sempre movia o foco para o primeiro controle focalizável noScrollViewer
e rolava esse controle para exibição. Para obter mais informações, consulte o problema #597 do GitHub. - Corrigido um problema em que o evento às vezes disparava
Window.Activated
várias vezes. Para obter mais informações, consulte o problema #7343 do GitHub. - Corrigido um problema em que definir a
NavigationViewItem.IsSelected
propriedade impediatrue
que seus filhos fossem exibidos quando expandidos. Para obter mais informações, consulte o problema #7930 do GitHub. - Corrigido um problema em que
MediaPlayerElement
não exibia corretamente legendas comNone
ouDropShadow
efeitos de borda. Para obter mais informações, consulte o problema #7981 do GitHub. - Corrigido um problema em que a
Flyout.ShowMode
propriedade não era usada ao mostrar o submenu. Para obter mais informações, consulte o problema #7987 do GitHub. - Corrigido um problema em que
NumberBox
às vezes havia erros de arredondamento. Para obter mais informações, consulte o problema #8780 do GitHub. - Corrigido um problema em que o uso de uma biblioteca compilada em uma versão mais antiga do WinAppSDK poderia ocorrer um erro ao tentar localizar um tipo ou propriedade. Para obter mais informações, consulte o problema #8810 do GitHub.
- Corrigido um problema em que o foco inicial do teclado não era definido ao iniciar uma janela. Para obter mais informações, consulte o problema #8816 do GitHub.
- Corrigido um problema em que
FlyoutShowMode.TransientWithDismissOnPointerMoveAway
não funcionava após a primeira vez que era mostrado. Para obter mais informações, consulte o problema #8896 do GitHub. - Corrigido um problema em que alguns controles não associavam e propriedades de modelo
Foreground
Background
corretamente. Para obter mais informações, consulte os problemas #7070, #9020, #9029, #9083 e #9102 do GitHub. - Corrigido um problema em que
ThemeResource
s usados emVisualStateManager
setters não eram atualizados na mudança de tema. Isso geralmente afetava os controles em submenus. Para obter mais informações, consulte o problema #9198 do GitHub. - Corrigido um problema em que
WebView
perdia o foco principal, resultando em eventos extras de desfoque/foco e outros problemas. Para obter mais informações, consulte o problema #9288 do GitHub. - Corrigido um problema em que
NavigationView
poderia mostrar um erro de associação na saída de depuração. Para obter mais informações, consulte o problema #9384 do GitHub. - Corrigido um problema em que os arquivos SVG que definiam uma caixa de visualização negativa não eram mais renderizados. Para obter mais informações, consulte o problema #9415 do GitHub.
- Corrigido um problema em que alterar
ItemsView.Layout
a orientação fazia com que um item fosse removido. Para obter mais informações, consulte o problema #9422 do GitHub. - Corrigido um problema em que a
ScrollView
rolagem gerava muita saída de depuração. Para obter mais informações, consulte o problema #9434 do GitHub. - Corrigido um problema em que
MapContorl.InteractiveControlsVisible
não funcionava corretamente. Para obter mais informações, consulte o problema #9486 do GitHub. - Corrigido um problema em que
MapControl.MapElementClick
o evento não era acionado corretamente. Para obter mais informações, consulte o problema #9487 do GitHub. - Corrigido um problema em que x:Bind não verificava se havia nulo antes de usar uma referência fraca, o que poderia resultar em uma falha. Para obter mais informações, consulte o problema #9551 do GitHub.
- Corrigido um problema em que a alteração da
TeachingTip.Target
propriedade não atualizava corretamente sua posição. Para obter mais informações, consulte o problema #9553 do GitHub. - Corrigido um problema em que as listas suspensas não respondiam no WebView2. Para obter mais informações, consulte o problema #9566 do GitHub.
- Corrigido um vazamento de memória ao usar
GeometryGroup
. Para obter mais informações, consulte o problema #9578 do GitHub. - Corrigido um problema em que rolar por um número muito grande de itens de um
ItemRepeater
em umScrollView
poderia causar quadros de renderização em branco. Para obter mais informações, consulte o problema #9643 do GitHub. - Corrigido um problema em que
SceneVisual
não estava funcionando.
Novas APIs na versão 1.6.0
A versão 1.6.0 inclui as seguintes novas APIs em comparação com a versão estável 1.5:
Microsoft.UI
ColorHelper
ToDisplayName
Microsoft.UI.Input
EnteredMoveSizeEventArgs
EnteringMoveSizeEventArgs
ExitedMoveSizeEventArgs
InputNonClientPointerSource
EnteredMoveSize
EnteringMoveSize
ExitedMoveSize
WindowRectChanged
WindowRectChanging
MoveSizeOperation
WindowRectChangedEventArgs
WindowRectChangingEventArgs
Microsoft.UI.Xaml
XamlRoot
CoordinateConverter
Microsoft.UI.Xaml.Automation.Peers
ScrollPresenterAutomationPeer
Microsoft.UI.Xaml.Controls
PipsPager
WrapMode
WrapModeProperty
PipsPagerWrapMode
TabView
CanTearOutTabs
CanTearOutTabsProperty
ExternalTornOutTabsDropped
ExternalTornOutTabsDropping
TabTearOutRequested
TabTearOutWindowRequested
TabViewExternalTornOutTabsDroppedEventArgs
TabViewExternalTornOutTabsDroppingEventArgs
TabViewTabTearOutRequestedEventArgs
TabViewTabTearOutWindowRequestedEventArgs
Microsoft.Windows.Globalization
ApplicationLanguages
Microsoft.Windows.Management.Deployment
EnsureReadyOptions
RegisterNewerIfAvailable
PackageDeploymentFeature
PackageDeploymentManager
IsPackageDeploymentFeatureSupported
IsPackageProvisioned
IsPackageProvisionedByUri
IsPackageReadyOrNewerAvailable
IsPackageReadyOrNewerAvailableByUri
IsPackageSetProvisioned
IsPackageSetReadyOrNewerAvailable
PackageReadyOrNewerAvailableStatus
Microsoft.Windows.Storage
ApplicationData
ApplicationDataContainer
ApplicationDataContract
ApplicationDataCreateDisposition
ApplicationDataLocality
Tópicos relacionados
Windows developer