Guía adicional de migración
Este tema contiene instrucciones de migración adicionales no clasificadas 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 podría ser útil si planeas usar el mismo archivo de código fuente en un proyecto de SDK de aplicación para UWP Windows UWP.
En el código fuente de C# de un proyecto Windows App SDK, 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 en un proyecto del SDK de Windows App, puedes usar directivas de preprocesador con WINAPI_FAMILY_PC_APP para hacer lo mismo. O bien, puede usar WINAPI_FAMILY_DESKTOP_APP en su lugar. Un comentario en el archivo winapifamily.h
de encabezado winapifamily.h
debe considerarse en desuso.
#if (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP)
// Win32/Desktop code, including Windows App SDK code
#else
// UWP code
#endif
También puede 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 encuentre la aplicación en un estado en el que el marcado XAML tenga referencias a claves de recursos XAML, pero aún no las haya definido. Este tipo de condición da lugar a 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 esté atento a estos mensajes.
Anular el registro de un controlador de eventos (C++/WinRT)
En un proyecto de C++/WinRT, puedes revocar manualmente (anular el registro) un controlador de eventos como SizeChanged (para obtener más detalles y ejemplos de código, consulta Revocar un delegado registrado). Pero una alternativa a la revocación manual ,y una que podría considerar si tiene problemas con la revocación manual, es usar un revocador de eventos automáticos de C++/WinRT. De nuevo, más detalles y ejemplos de código en Revocación de un delegado registrado.