Freigeben über


Zusätzliche Migrationsleitfäden

Dieses Thema enthält zusätzliche Migrationsleitfäden, die nicht in einen Featurebereich in den Featurebereichsanleitungen kategorisiert sind.

Bedingte Kompilierung

Die Informationen in diesem Abschnitt können hilfreich sein, wenn Sie beabsichtigen, die gleiche Quellcodedatei sowohl in einem UWP- als auch in einem Windows App SDK-Projekt zu verwenden.

In C#-Quellcode in einem Windows App SDK-Projekt können Sie Präprozessordirektiven mit dem symbol WINDOWS_UWP verwenden, um die bedingte Kompilierung durchzuführen.

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

In C++/WinRT-Quellcode in einem Windows App SDK-Projekt können Sie Präprozessordirektiven mit WINAPI_FAMILY_PC_APP verwenden, um dasselbe zu tun. Alternativ können Sie stattdessen WINAPI_FAMILY_DESKTOP_APP verwenden. Ein Kommentar in der winapifamily.h Headerdatei gibt an, dass WINAPI_FAMILY_APP als veraltet betrachtet werden sollte.

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

Sie können auch die bedingte Kompilierung im XAML-Markup verwenden.

<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>

Siehe auch die bedingte Kompilierung.

Debuggen

Während des Migrationsprozesses finden Sie Ihre App möglicherweise in einem Zustand, in dem Ihr XAML-Markup Verweise auf XAML-Ressourcenschlüssel enthält, aber Sie haben diese Schlüssel noch nicht definiert. Eine solche Bedingung führt zu einem Laufzeitabsturz, der möglicherweise nicht einfach zu debuggen ist. In einem Debugbuild werden jedoch Meldungen zu fehlenden Ressourcenschlüsseln in Visual Studio über die Debugausgabe im Ausgabebereich angezeigt. Führen Sie ihre App also unter dem Debugger aus, und achten Sie auf solche Nachrichten.

Aufheben der Registrierung eines Ereignishandlers (C++/WinRT)

In einem C++/WinRT-Projekt können Sie einen Ereignishandler wie SizeChanged manuell widerrufen (aufheben) (weitere Details und Codebeispiele finden Sie unter Widerrufen eines registrierten Delegaten). Eine Alternative zum manuellen Widerrufen – und eine Alternative, die Sie berücksichtigen könnten, wenn Sie Probleme beim manuellen Widerrufen haben – besteht darin, einen automatischen C++/WinRT-Ereignis-Revoker zu verwenden. Weitere Details und Codebeispiele in "Widerrufen einer registrierten Stellvertretung".

Weitere Informationen