Share via


其他移轉指南

本主題包含功能區域指南中未分類為功能區域的其他移轉指引

條件式編譯

如果您打算在 UWP 和 Windows 應用程式 SDK 專案中使用相同的原始碼檔案,本節中的資訊可能會很有用。

在 Windows 應用程式 SDK 專案中的 C# 原始程式碼中,您可以使用預處理器指示詞搭配 WINDOWS_UWP 符號來執行條件式編譯。

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

在 Windows 應用程式 SDK 專案中的 C++/WinRT 原始碼中,您可以使用預處理器指示詞搭配 WINAPI_FAMILY_PC_APP 來執行相同的動作。 或者,您可以改用 WINAPI_FAMILY_DESKTOP_APPwinapifamily.h 標頭檔中的註釋顯示 WINAPI_FAMILY_APP 應被視為已棄用。

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

您也可以在 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>

也請參閱條件式編譯

偵錯

在移轉程式期間,您可能會發現您的應用程式處於 XAML 標記參考 XAML 資源索引鍵的狀態,但尚未定義這些索引鍵。 這類條件會導致執行時間當機,可能無法直接偵錯。 但在偵錯版本中,缺少資源鍵的訊息會透過輸出窗格中的偵錯輸出顯示在 Visual Studio 中。 因此,在偵錯程式下執行您的應用程式,並留意此類訊息。

取消註冊事件處理程式 (C++/WinRT)

在 C++/WinRT 專案中,可以手動撤銷 (取消註冊) 事件處理程序,例如 SizeChanged (有關更多詳細資訊和程式碼範例,請參閱撤銷已註冊委託)。 但手動撤銷的替代方案,以及您在手動撤銷時遇到問題時可以考慮的替代方案,就是使用 C++/WinRT 自動事件撤銷程式。 同樣地,撤銷已註冊委派中的更多詳細資料和程式代碼範例。