Дополнительные рекомендации по миграции
В этом разделе содержатся дополнительные рекомендации по миграции, которые не классифицируются по областям функций в руководствах по областям функций.
Условная компиляция
Сведения в этом разделе могут быть полезны, если вы планируете использовать один и тот же файл исходного кода как в UWP, так и в проекте Windows App SDK.
В исходном коде C# в проекте Windows App SDK можно использовать директивы препроцессора с символом WINDOWS_UWP для выполнения условной компиляции.
#if !WINDOWS_UWP
// Win32/Desktop code, including Windows App SDK code
#else
// UWP code
#endif
В исходном коде C++/WinRT в проекте Windows App SDK можно использовать директивы препроцессора с 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 через выходные данные отладки на панели Вывод . Поэтому запустите приложение в отладчике и watch для таких сообщений.
Отмена регистрации обработчика событий (C++/WinRT)
В проекте C++/WinRT можно вручную отозвать (отменить регистрацию) обработчик событий, например SizeChanged (дополнительные сведения и примеры кода см. в разделе Отзыв зарегистрированного делегата). Но альтернативой отзыву вручную ( и который можно рассмотреть при возникновении проблем с отзывом вручную) является использование автоматического отзыва событий C++/WinRT. Опять же, дополнительные сведения и примеры кода см. в разделе Отзыв зарегистрированного делегата.
Windows developer
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по