Converting the source tree to WinUI
The current Uno source tree is based on UWP, and the CI uses a specific step to generate the WinUI 3.0 compatible API set, and the associated packages.
Using the auto-generated synchronized branch
The Uno CI automatically maintains a WinUI-converted branch of the tree after every push to tracked branches, in order to get started faster when debugging WinUI related issues.
The branch is maintained as follows:
generated\[branch]\winui-autoconvert
You can checkout this branch locally to get started faster.
The conversion process
The conversion process is done as follows, from a clean repository:
- The
Uno.WinUIRevert
is removing and moving folders from the UWP structure to adjust to the WinUI structure - The
Uno.UWPSyncGenerator
is run to regenerate the whole WinRT/WinUI 3.0 API set - A set of nuspec conversions are performed in
build\Uno.UI.Build.csproj
in theBuildNuGetPackage
target
To ease the adjustments when conversion issues arise:
- The
UNO_UWP_BUILD
msbuild variable is set totrue
when the tree is "UWP" mode, and undefined when the tree is in WinUI mode. - The
HAS_UNO_WINUI
C# constant is defined when the tree is built in WinUI mode.
Converting a local source tree
The conversion process can be run locally as follows:
- cd
uno-repo\build\scripts
convert-sourcetree-to-winui.cmd
You'll need to ensure that the crosstargeting_override.props
file is not defining UnoTargetFrameworkOverride
otherwise the UWPSyncGenerator will generate an invalid API set.