Diretrizes de migração adicionais

Este tópico contém diretrizes adicionais de migração não categorizadas em uma área de recurso nos guias da área 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 C++/WinRT em um projeto de 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>

Confira 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 tenha 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, as 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 watch para essas mensagens.

Cancelar 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 para revogar manualmente — e uma que você pode considerar se estiver tendo problemas com a revogação manual — é usar um revogador de evento automático C++/WinRT. Novamente, mais detalhes e exemplos de código em Revogar um delegado registrado.