Guía adicional de migración

Este tema contiene instrucciones de migración adicionales que no se clasifican en un área de características en las guías de área de características.

Compilación condicional

La información de esta sección puede ser útil si planeas usar el mismo archivo de código fuente en un proyecto de UWP y un SDK de Aplicaciones para Windows.

En el código fuente de C# de un proyecto de SDK de Aplicaciones para Windows, puede usar directivas de preprocesador con el símbolo WINDOWS_UWP para realizar la compilación condicional.

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

En el código fuente de C++/WinRT de un proyecto de SDK de Aplicaciones para Windows, puede usar directivas de preprocesador con WINAPI_FAMILY_PC_APP para hacer lo mismo. O bien, podría usar WINAPI_FAMILY_DESKTOP_APP en su lugar. Un comentario en el archivo de winapifamily.h encabezado indica que WINAPI_FAMILY_APP deben considerarse en desuso.

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

También puedes usar la compilación condicional en el marcado 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 también Compilación condicional.

Depuración

Durante el proceso de migración, es posible que encuentres la aplicación en un estado en el que el marcado XAML tenga referencias a claves de recursos XAML, pero aún no has definido esas claves. Esta condición da como resultado un bloqueo en tiempo de ejecución que podría no ser sencillo de depurar. Pero en una compilación de depuración, los mensajes sobre las claves de recursos que faltan aparecen en Visual Studio a través de la salida de depuración en el panel Salida . Por lo tanto, ejecute la aplicación en el depurador y watch para estos mensajes.

Anulación del registro de un controlador de eventos (C++/WinRT)

En un proyecto de C++/WinRT, puede revocar manualmente (anular el registro) un controlador de eventos como SizeChanged (para obtener más detalles y ejemplos de código, vea Revocar un delegado registrado). Pero una alternativa a revocar manualmente ,y otra que podría considerar si tiene problemas con la revocación manual, es usar un revocador de eventos automático de C++/WinRT. De nuevo, más detalles y ejemplos de código en Revocar un delegado registrado.