Share via


Indicazioni aggiuntive sulla migrazione

Questo argomento contiene ulteriori indicazioni sulla migrazione non categorizzate in un'area di funzionalità nelle guide alle aree di funzionalità.

Compilazione condizionale

Le informazioni riportate in questa sezione possono essere utili se si ha intenzione di usare lo stesso file di codice sorgente in un progetto UWP e in un progetto Windows App SDK.

Nel codice sorgente C# in un progetto Windows App SDK, è possibile utilizzare le direttive del preprocessore con il simbolo WINDOWS_UWP per eseguire la compilazione condizionale.

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

Nel codice sorgente C++/WinRT in un progetto Windows App SDK, è possibile utilizzare le direttive del preprocessore con il simbolo WINAPI_FAMILY_PC_APP per eseguire la stessa operazione. Oppure si può utilizzare WINAPI_FAMILY_DESKTOP_APP. Un commento nel file di intestazione winapifamily.h indica che WINAPI_FAMILY_APP deve essere ritenuta deprecata.

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

Si può usare la compilazione condizionale nel markup 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>

Vedere anche Compilazione condizionale.

Debug

Durante il processo di migrazione, l'app potrebbe trovarsi in uno stato in cui il markup XAML ha dei riferimenti alle chiavi di risorsa XAML, ma queste chiavi ancora non sono state definite. Questa condizione comporta un arresto anomalo in fase di runtime di cui il debug potrebbe non essere semplice. Ma in una build di debug, i messaggi sulle chiavi di risorsa mancanti compaiono in Visual Studio tramite l'output di debug nel riquadro Output. Perciò eseguire l'app nel debugger e prestare attenzione a questi messaggi.

Annullare la registrazione a un gestore eventi (C++/WinRT)

In un progetto C++/WinRT, è possibile revocare (annullare la registrazione) manualmente un gestore eventi come SizeChanged (per maggiori dettagli ed esempi di codice vedere Revocare un delegato registrato). Ma un'alternativa alla revoca manuale, da tenere in considerazione in caso di problemi con questo tipo di revoca, è l'utilizzo di un revocatore di eventi automatico C++/WinRT. Ancora, maggiori dettagli ed esempi di codice in Revocare un delegato registrato.