其他移轉指南
本主題包含功能區域指南中未分類為功能區域的其他移轉指引。
條件式編譯
如果您打算在 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_APP。 winapifamily.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 自動事件撤銷程式。 同樣地,撤銷已註冊委派中的更多詳細資料和程式代碼範例。