Autres conseils de migration

Cette rubrique contient des instructions de migration supplémentaires non catégorisées dans une zone de fonctionnalité dans les guides de zone de fonctionnalités.

Compilation conditionnelle

Les informations de cette section peuvent être utiles si vous envisagez d’utiliser le même fichier de code source dans un projet UWP et un projet Windows App SDK.

Dans le code source C# d’un projet Windows App SDK, vous pouvez utiliser des directives de préprocesseur avec le symbole WINDOWS_UWP pour effectuer une compilation conditionnelle.

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

Dans le code source C++/WinRT d’un projet Windows App SDK, vous pouvez utiliser des directives de préprocesseur avec WINAPI_FAMILY_PC_APP pour effectuer la même chose. Vous pouvez également utiliser WINAPI_FAMILY_DESKTOP_APP à la place. Un commentaire dans le winapifamily.h fichier d’en-tête indique que WINAPI_FAMILY_APP doit être considéré comme déprécié.

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

Vous pouvez également utiliser la compilation conditionnelle dans le balisage 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>

Consultez également Compilation conditionnelle.

Débogage

Pendant le processus de migration, vous pouvez trouver votre application dans un état où votre balisage XAML contient des références à des clés de ressources XAML, mais vous n’avez pas encore défini ces clés. Une telle condition entraîne un blocage au moment de l’exécution qui peut ne pas être simple à déboguer. Toutefois, dans une build de débogage, les messages concernant les clés de ressources manquantes s’affichent dans Visual Studio via une sortie de débogage dans le volet Sortie . Exécutez donc votre application sous le débogueur et watch pour de tels messages.

Désinscription d’un gestionnaire d’événements (C++/WinRT)

Dans un projet C++/WinRT, vous pouvez révoquer manuellement (désinscrire) un gestionnaire d’événements tel que SizeChanged (pour plus d’informations et des exemples de code, voir Révoquer un délégué inscrit). Mais une alternative à la révocation manuelle, et que vous pouvez envisager si vous rencontrez des problèmes avec la révocation manuelle, consiste à utiliser un révocateur d’événements automatique C++/WinRT. Là encore, plus de détails et d’exemples de code dans Révoquer un délégué inscrit.