Migrate to Uno.Sdk#305
Open
MartinZikmund wants to merge 25 commits into
Open
Conversation
b7fd380 to
5290b8f
Compare
25e6b65 to
e673abd
Compare
041c863 to
4fcc0c4
Compare
4fcc0c4 to
3d1928d
Compare
^ Conflicts: ^ .github/workflows/build.yml
The job runs on ubuntu-latest but installed ios/maui workloads which aren't supported on Linux, failing at the install step. Uno.Sdk auto-filters the iOS TFM on Linux, so only android + wasm-tools are needed for the desktop/browserwasm heads this job builds. Also renamed the job from the misleading "uno-windows" back to "uno-linux". Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The uno-linux job runs on ubuntu-latest and all its build steps use dotnet (slngen, dotnet build). The microsoft/setup-msbuild action is Windows-only and fails on Linux. Remove it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
dotnet workload install ran at the repo root before global.json was copied there, so it installed android/wasm-tools for the runner's preinstalled SDK 10 band. The build is pinned to the 9.0.x band via global.json, where no workloads were present, causing NETSDK1147. Run the install from ./tooling so global.json scopes it to the right band. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The new Uno.Sdk head platform entry-point files (Desktop/WebAssembly/ Android/iOS) were missing the standard .NET Foundation license header. Consumers that enforce IDE0073 (file header required) as an error — like CommunityToolkit/Windows — fail to build the Uno head without them. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ded6698 to
01a12c0
Compare
There was a problem hiding this comment.
Pull request overview
This PR migrates the tooling “project heads” to use Uno.Sdk (primarily for WinUI 3 / Uno 6.x), updating build scripts and CI to generate/build the new Uno head alongside existing multi-target heads.
Changes:
- Adds new Uno.Sdk-based heads for AllComponents and SingleComponent (desktop/wasm/android/ios scaffolding).
- Updates Uno package/version management to support Uno 5.x for WinUI 2 and Uno 6.x for WinUI 3 via conditional props.
- Updates generation scripts and GitHub Actions workflows to include/build the Uno.Sdk head and install required workloads.
Reviewed changes
Copilot reviewed 54 out of 63 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| ProjectHeads/SingleComponent/Wasm/Program.cs | Updates WinAppSDK WASM entrypoint to use UnoPlatformHostBuilder. |
| ProjectHeads/SingleComponent/Uno/ProjectTemplate.Uno.csproj | Adds new SingleComponent Uno.Sdk head project. |
| ProjectHeads/SingleComponent/Uno/Platforms/WebAssembly/WasmScripts/AppManifest.js | Adds Uno WASM app manifest (display name). |
| ProjectHeads/SingleComponent/Uno/Platforms/WebAssembly/Program.cs | Adds Uno WASM entrypoint for SingleComponent head. |
| ProjectHeads/SingleComponent/Uno/Platforms/WebAssembly/manifest.webmanifest | Adds web manifest for WASM PWA metadata. |
| ProjectHeads/SingleComponent/Uno/Platforms/WebAssembly/LinkerConfig.xml | Adds linker descriptor for WASM trimming behavior. |
| ProjectHeads/SingleComponent/Uno/Platforms/iOS/PrivacyInfo.xcprivacy | Adds iOS privacy manifest. |
| ProjectHeads/SingleComponent/Uno/Platforms/iOS/Media.xcassets/LaunchImages.launchimage/Contents.json | Adds iOS launch image asset metadata. |
| ProjectHeads/SingleComponent/Uno/Platforms/iOS/Main.iOS.cs | Adds iOS entry point using UnoPlatformHostBuilder. |
| ProjectHeads/SingleComponent/Uno/Platforms/iOS/Info.plist | Adds iOS app plist. |
| ProjectHeads/SingleComponent/Uno/Platforms/iOS/Entitlements.plist | Adds iOS entitlements placeholder. |
| ProjectHeads/SingleComponent/Uno/Platforms/Desktop/Program.cs | Adds desktop entrypoint enabling platform hosts (X11/Win32/etc.). |
| ProjectHeads/SingleComponent/Uno/Platforms/Android/Resources/values/Styles.xml | Adds Android styles scaffolding. |
| ProjectHeads/SingleComponent/Uno/Platforms/Android/Resources/values/Strings.xml | Adds Android strings scaffolding. |
| ProjectHeads/SingleComponent/Uno/Platforms/Android/MainActivity.Android.cs | Adds Android activity scaffold for Uno. |
| ProjectHeads/SingleComponent/Uno/Platforms/Android/Main.Android.cs | Adds Android application entry scaffold for Uno. |
| ProjectHeads/SingleComponent/Uno/Platforms/Android/environment.conf | Adds Mono GC tuning for Android. |
| ProjectHeads/SingleComponent/Uno/Platforms/Android/Assets/AboutAssets.txt | Adds Android assets readme. |
| ProjectHeads/SingleComponent/Uno/Platforms/Android/AndroidManifest.xml | Adds Android manifest scaffold. |
| ProjectHeads/SingleComponent/Uno/Assets/Splash/splash_screen.svg | Adds splash asset for Uno head. |
| ProjectHeads/SingleComponent/Uno/Assets/SharedAssets.md | Adds shared assets documentation. |
| ProjectHeads/SingleComponent/Uno/Assets/Icons/icon.svg | Adds app icon background asset. |
| ProjectHeads/SingleComponent/Uno/Assets/Icons/icon_foreground.svg | Adds app icon foreground asset. |
| ProjectHeads/GenerateSingleSampleHeads.ps1 | Adds -IncludeUnoSdkHead support for generation. |
| ProjectHeads/App.Head.Wasm.props | Adjusts wasm head output path behavior; aligns Uno adapter version selection. |
| ProjectHeads/App.Head.Uno.WinUI.Dependencies.props | Updates Uno.WinUI Lottie dependency to 6.x line. |
| ProjectHeads/App.Head.Uno.UI.Dependencies.props | Removes trailing blank lines. |
| ProjectHeads/App.Head.Uno.props | Makes dependency variant and dependency imports conditional on WinUI major version. |
| ProjectHeads/AllComponents/Wasm/Program.cs | Updates WinAppSDK WASM entrypoint to use UnoPlatformHostBuilder. |
| ProjectHeads/AllComponents/Uno/Platforms/WebAssembly/WasmScripts/AppManifest.js | Adds Uno WASM app manifest (display name). |
| ProjectHeads/AllComponents/Uno/Platforms/WebAssembly/Program.cs | Adds Uno WASM entrypoint for AllComponents head. |
| ProjectHeads/AllComponents/Uno/Platforms/WebAssembly/manifest.webmanifest | Adds web manifest for WASM PWA metadata. |
| ProjectHeads/AllComponents/Uno/Platforms/WebAssembly/LinkerConfig.xml | Adds linker descriptor for WASM trimming behavior. |
| ProjectHeads/AllComponents/Uno/Platforms/iOS/PrivacyInfo.xcprivacy | Adds iOS privacy manifest. |
| ProjectHeads/AllComponents/Uno/Platforms/iOS/Media.xcassets/LaunchImages.launchimage/Contents.json | Adds iOS launch image asset metadata. |
| ProjectHeads/AllComponents/Uno/Platforms/iOS/Main.iOS.cs | Adds iOS entry point using UnoPlatformHostBuilder. |
| ProjectHeads/AllComponents/Uno/Platforms/iOS/Info.plist | Adds iOS app plist. |
| ProjectHeads/AllComponents/Uno/Platforms/iOS/Entitlements.plist | Adds iOS entitlements placeholder. |
| ProjectHeads/AllComponents/Uno/Platforms/Desktop/Program.cs | Adds desktop entrypoint enabling platform hosts (X11/Win32/etc.). |
| ProjectHeads/AllComponents/Uno/Platforms/Android/Resources/values/Styles.xml | Adds Android styles scaffolding. |
| ProjectHeads/AllComponents/Uno/Platforms/Android/Resources/values/Strings.xml | Adds Android strings scaffolding. |
| ProjectHeads/AllComponents/Uno/Platforms/Android/MainActivity.Android.cs | Adds Android activity scaffold for Uno. |
| ProjectHeads/AllComponents/Uno/Platforms/Android/Main.Android.cs | Adds Android application entry scaffold for Uno. |
| ProjectHeads/AllComponents/Uno/Platforms/Android/environment.conf | Adds Mono GC tuning for Android. |
| ProjectHeads/AllComponents/Uno/Platforms/Android/Assets/AboutAssets.txt | Adds Android assets readme. |
| ProjectHeads/AllComponents/Uno/Platforms/Android/AndroidManifest.xml | Adds Android manifest scaffold. |
| ProjectHeads/AllComponents/Uno/CommunityToolkit.App.Uno.csproj | Adds new AllComponents Uno.Sdk head project. |
| ProjectHeads/AllComponents/Uno/Assets/Splash/splash_screen.svg | Adds splash asset for Uno head. |
| ProjectHeads/AllComponents/Uno/Assets/SharedAssets.md | Adds shared assets documentation. |
| ProjectHeads/AllComponents/Uno/Assets/Icons/icon.svg | Adds app icon background asset. |
| ProjectHeads/AllComponents/Uno/Assets/Icons/icon_foreground.svg | Adds app icon foreground asset. |
| MultiTarget/UseUnoWinUI.ps1 | Simplifies WinUI swap behavior (stops rewriting package IDs by string replace). |
| MultiTarget/Test-Component-Support.ps1 | Updates WinUI 3 multi-target support list. |
| MultiTarget/PackageReferences/Uno.props | Splits Uno.UI vs Uno.WinUI versions and conditions; adjusts wasm/devserver references. |
| MultiTarget/AvailableTargetFrameworks.props | Whitespace cleanup. |
| global.json | Registers Uno.Sdk as an MSBuild SDK reference. |
| GenerateVSCodeLaunchConfig.ps1 | Adds a separate VS Code launch config entry for Uno heads. |
| GenerateSingleSolution.ps1 | Adds -IncludeUnoSdkHead and skips classic WASM head when Uno.Sdk head is included. |
| GenerateAllSolution.ps1 | Adds -IncludeUnoSdkHead and includes Uno.Sdk head for all-components solution generation. |
| CommunityToolkit.App.Shared/Renderers/Markdown/MarkdownTextBlock.cs | Alters Uno WASM polyfill compilation conditions for Markdown rendering. |
| Build-Toolkit-Gallery.ps1 | Whitespace cleanup. |
| Build-Toolkit-Components.ps1 | Whitespace cleanup. |
| .github/workflows/build.yml | Adds workload installs, copies global.json to root, adds Uno.Sdk CI coverage (Windows matrix + Linux Uno builds). |
Comments suppressed due to low confidence (1)
CommunityToolkit.App.Shared/Renderers/Markdown/MarkdownTextBlock.cs:23
- The Uno WASM MarkdownTextBlock polyfill is now excluded for WINUI3 builds. For Uno.WinUI WebAssembly (the new Uno.Sdk head), this will fall back to the non-WASM implementation (a plain TextBlock), which prevents markdown from being rendered.
#if HAS_UNO_WASM && !WINUI3
using Markdig;
using Uno.Foundation.Interop;
using Uno.UI.Runtime.WebAssembly;
#endif
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+30
to
33
| #if HAS_UNO_WASM && !WINUI3 | ||
| [HtmlElement("div")] | ||
| public partial class MarkdownTextBlock : TextBlock | ||
| { |
Comment on lines
+42
to
+50
| `"args`": [ | ||
| `"run`", | ||
| `"build`", | ||
| `"/r`", | ||
| `"/p:UnoSourceGeneratorUseGenerationHost=true`", | ||
| `"/p:UnoSourceGeneratorUseGenerationController=false`", | ||
| `"/p:UnoRemoteControlPort=443`", | ||
| `"--project=`$`{workspaceFolder`}/components/$projectName/heads/Uno/$projectName.Uno.csproj`" | ||
| ], |
Comment on lines
+115
to
+117
| - name: Install .NET workloads | ||
| run: dotnet workload install wasm-tools | ||
|
|
Comment on lines
+192
to
+195
| - name: Install .NET workloads | ||
| if: ${{ matrix.multitarget == 'wasm' || matrix.multitarget == 'unosdk' }} | ||
| run: dotnet workload install wasm-tools ${{ matrix.multitarget == 'unosdk' && 'android ios maui' || '' }} | ||
|
|
Comment on lines
+1
to
+3
| <linker> | ||
| <assembly fullname="CommunityToolkit.App.Uno" /> | ||
| </linker> |
Comment on lines
+10
to
+22
| <IsPackable>false</IsPackable> | ||
| <UnoSingleProject>true</UnoSingleProject> | ||
|
|
||
| <!-- Platform flags for project reference conditions --> | ||
| <IsDeployableHead>true</IsDeployableHead> | ||
| <IsUno>true</IsUno> | ||
| <IsWasm>true</IsWasm> | ||
| <HasWinUI>true</HasWinUI> | ||
| <WinUIMajorVersion>3</WinUIMajorVersion> | ||
| <IsSingleExperimentHead>true</IsSingleExperimentHead> | ||
| <DependencyVariant>WinUI</DependencyVariant> | ||
|
|
||
| <DefineConstants>$(DefineConstants);WINUI3</DefineConstants> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Depends on #304