Diretrizes de migração adicionais

Este tópico contém orientações de migração adicionais não categorizadas em uma área de recursos nos guias de áreas de recursos.

Compilação condicional

As informações nesta seção podem ser úteis se você planeja usar o mesmo arquivo de código-fonte em um projeto UWP e SDK do Aplicativo Windows.

No código-fonte C# em um projeto SDK do Aplicativo Windows, você pode usar diretivas de pré-processador com o símbolo WINDOWS_UWP para executar a compilação condicional.

#if !WINDOWS_UWP
    // Win32/Desktop code, including Windows App SDK code
#else
    // UWP code
#endif

No código-fonte do C++/WinRT em um projeto SDK do Aplicativo Windows, você pode usar diretivas de pré-processador com WINAPI_FAMILY_PC_APP para fazer a mesma coisa. Ou você pode usar WINAPI_FAMILY_DESKTOP_APP em vez disso. Um comentário no winapifamily.h arquivo de cabeçalho indica que WINAPI_FAMILY_APP deve ser considerado preterido.

#if (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP)
    // Win32/Desktop code, including Windows App SDK code
#else
    // UWP code
#endif

Você também pode usar a compilação condicional na marcação XAML.

<Application
    ...
    xmlns:nouwp="condition:!WINDOWS_UWP"
    mc:Ignorable="nouwp">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <!--Not Needed for UWP-->
                <nouwp:XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
                 <!--Other merged dictionaries here--> 
            </ResourceDictionary.MergedDictionaries>
             <!--Other app resources here--> 
        </ResourceDictionary>
    </Application.Resources>
</Application>

Consulte também Compilação condicional.

Depuração

Durante o processo de migração, você pode encontrar seu aplicativo em um estado em que sua marcação XAML tem referências a chaves de recurso XAML, mas você ainda não definiu essas chaves. Essa condição resulta em uma falha em tempo de execução que pode não ser simples de depurar. Mas em um build de depuração, mensagens sobre chaves de recurso ausentes aparecem no Visual Studio por meio da saída de depuração no painel Saída . Portanto, execute seu aplicativo no depurador e fique atento a essas mensagens.

Cancelando o registro de um manipulador de eventos (C++/WinRT)

Em um projeto C++/WinRT, você pode revogar manualmente (cancelar o registro) de um manipulador de eventos, como SizeChanged (para obter mais detalhes e exemplos de código, consulte Revogar um delegado registrado). Mas uma alternativa à revogação manual — e que você pode considerar se estiver tendo problemas com a revogação manual — é usar um revogador de eventos automático do C++/WinRT. Novamente, mais detalhes e exemplos de código em Revogar um delegado registrado.

Confira também