feat!: Drop WPF targets#23261
Conversation
Removes the WPF-based Skia desktop runtime (Uno.WinUI.Skia.Wpf / Uno.WinUI.Runtime.Skia.Wpf) and the WPF Islands hosting control (Uno.WinUI.XamlHost.Skia.Wpf). These targets have been superseded by the native Skia Desktop runtimes (Win32, X11, MacOS, Linux.FrameBuffer). The cross-platform Uno.UI.XamlHost base library and its non-WPF Islands samples are preserved, as is migration documentation that helps WPF developers adopt Uno/WinUI. The _UnoWebView2RemoveWpf MSBuild target is kept defensively because Microsoft.Web.WebView2 still ships a WPF variant that can leak through transitive NuGet references. Shared P/Invoke and OpenGL wrapper sources that were previously hosted under Uno.UI.Runtime.Skia.Wpf are relocated under Uno.WinUI.Graphics3DGL/Windows so the Graphics3DGL package continues to build for the WinAppSDK target. BREAKING CHANGE: Apps targeting Uno.WinUI.Skia.Wpf must migrate to one of the native Skia Desktop runtimes (Win32, X11, MacOS or Linux.FrameBuffer). Apps using UnoXamlHost to embed Uno controls in WPF must rehost into a standalone Uno application. closes unoplatform#23260 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR removes Uno’s WPF-based Skia desktop runtime and WPF Islands support across the repo (projects/packages, build logic, CI, tests, and docs), aligning desktop Skia support around the native runtimes (Win32/X11/MacOS/Linux FrameBuffer). It also relocates the Windows OpenGL/PInvoke helper sources into the Graphics3DGL add-in and updates the canonical Skia desktop sample head to remove WPF coupling.
Changes:
- Removed WPF runtime/WPF Islands projects and all associated build/CI plumbing, tests, and templates.
- Updated SamplesApp Skia Generic head and related build artifacts to no longer depend on WPF.
- Moved Win32 OpenGL wrapper + native method declarations to
Uno.WinUI.Graphics3DGL(Windows-only, WinAppSDK path).
Reviewed changes
Copilot reviewed 162 out of 171 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| src/Uno.UWP/AssemblyInfo.skia.cs | Remove WPF/WPF Islands InternalsVisibleTo entries. |
| src/Uno.UWP/AssemblyInfo.cs | Remove WPF InternalsVisibleTo. |
| src/Uno.UWP/ApplicationModel/DataTransfer/Clipboard.cs | Remove WPF-specific clipboard comment. |
| src/Uno.UI/UI/Xaml/Controls/TextBox/Extensions/IOverlayTextBoxView.skia.cs | Generalize comment that previously named Skia.WPF. |
| src/Uno.UI/AssemblyInfo.skia.cs | Remove WPF/WPF-Islands-related InternalsVisibleTo entries. |
| src/Uno.UI.XamlHost/Properties/AssemblyInfo.skia.cs | Remove WPF-related InternalsVisibleTo entries. |
| src/Uno.UI.XamlHost.Skia.Wpf/UwpUIElementExtensions.cs | Delete WPF Islands helper (project removal). |
| src/Uno.UI.XamlHost.Skia.Wpf/UnoXamlHostWrapperConverter.cs | Delete WPF Islands converter (project removal). |
| src/Uno.UI.XamlHost.Skia.Wpf/UnoXamlHostBase.Layout.cs | Delete WPF Islands layout integration (project removal). |
| src/Uno.UI.XamlHost.Skia.Wpf/UnoXamlHostBase.host.cs | Delete WPF Islands host implementation (project removal). |
| src/Uno.UI.XamlHost.Skia.Wpf/UnoXamlHost.DataBinding.cs | Delete WPF Islands data-binding integration (project removal). |
| src/Uno.UI.XamlHost.Skia.Wpf/UnoXamlHost.cs | Delete WPF Islands control (project removal). |
| src/Uno.UI.XamlHost.Skia.Wpf/Uno.UI.XamlHost.Skia.Wpf.csproj | Delete WPF Islands project. |
| src/Uno.UI.XamlHost.Skia.Wpf/Properties/AssemblyInfo.cs | Delete WPF Islands assembly attributes. |
| src/Uno.UI.TestComparer/Uno.UI.TestComparer.csproj | Switch to $(NetPrevious)-windows in place of WPF-specific property. |
| src/Uno.UI.slnx | Remove WPF projects from solution layout. |
| src/Uno.UI.RuntimeTests/Tests/Windows_UI_Xaml_Controls/Given_WebView.cs | Remove SkiaWpf from excluded platform list. |
| src/Uno.UI.RuntimeTests/Tests/Windows_UI_Xaml_Controls/Given_ContentControl.NativeElement.cs | Remove WPF-only runtime tests (native WPF element hosting). |
| src/Uno.UI.RuntimeTests/Tests/Microsoft_UI_Xaml_Controls/Given_WebView2.cs | Remove SkiaWpf from excluded platform list. |
| src/Uno.UI.RuntimeTests/Helpers/RuntimeTestsPlatformHelper.cs | Remove SkiaWpf platform detection. |
| src/Uno.UI.RuntimeTests/Helpers/RuntimeTestPlatforms.cs | Remove SkiaWpf flag and adjust SkiaDesktop composite. |
| src/Uno.UI.RuntimeTests/Helpers/ConditionalTestHelper.cs | Remove SkiaWpf conditional logic (now missing FrameBuffer handling—see review comment). |
| src/Uno.UI.Runtime.Skia/AssemblyInfo.cs | Remove WPF InternalsVisibleTo. |
| src/Uno.UI.Runtime.Skia.Wpf/Uno.UI.Runtime.Skia.Wpf.csproj | Delete WPF runtime project. |
| src/Uno.UI.Runtime.Skia.Wpf/UI/Xaml/Window/WpfWindowWrapper.cs | Delete WPF window wrapper implementation. |
| src/Uno.UI.Runtime.Skia.Wpf/UI/Xaml/Window/UnoWpfWindowHost.cs | Delete WPF window host implementation. |
| src/Uno.UI.Runtime.Skia.Wpf/UI/Xaml/Window/UnoWpfWindow.cs | Delete WPF window implementation. |
| src/Uno.UI.Runtime.Skia.Wpf/UI/Xaml/Window/IWpfWindowHost.cs | Delete WPF host interface. |
| src/Uno.UI.Runtime.Skia.Wpf/UI/Xaml/Controls/TextBox/WpfTextViewTextBox.cs | Delete WPF overlay textbox control. |
| src/Uno.UI.Runtime.Skia.Wpf/UI/Windowing/NativeOverlappedPresenter.cs | Delete WPF presenter bridge. |
| src/Uno.UI.Runtime.Skia.Wpf/Rendering/WpfRendererProvider.cs | Delete WPF renderer provider. |
| src/Uno.UI.Runtime.Skia.Wpf/Rendering/SoftwareWpfRenderer.cs | Delete WPF software renderer. |
| src/Uno.UI.Runtime.Skia.Wpf/Rendering/RenderSurfaceType.cs | Delete WPF render-surface enum. |
| src/Uno.UI.Runtime.Skia.Wpf/Rendering/IWpfRenderer.cs | Delete WPF renderer interface. |
| src/Uno.UI.Runtime.Skia.Wpf/Properties/AssemblyInfo.cs | Delete WPF runtime assembly attributes and InternalsVisibleTo. |
| src/Uno.UI.Runtime.Skia.Wpf/Input/WpfKeyboardInputSource.cs | Delete WPF keyboard input source. |
| src/Uno.UI.Runtime.Skia.Wpf/Input/MouseModifierKeys.cs | Delete WPF mouse modifier constants. |
| src/Uno.UI.Runtime.Skia.Wpf/Input/FrameIdProvider.cs | Delete WPF frame-id helper. |
| src/Uno.UI.Runtime.Skia.Wpf/Hosting/WpfHost.cs | Delete WPF host entrypoint. |
| src/Uno.UI.Runtime.Skia.Wpf/Hosting/IWpfXamlRootHost.cs | Delete WPF XamlRoot host interface. |
| src/Uno.UI.Runtime.Skia.Wpf/Hosting/IWpfApplicationHost.cs | Delete WPF application host interface. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/WpfNativeWebViewProvider.cs | Delete WPF WebView provider. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/WpfNativeElementHostingExtension.helper.cs | Delete WPF native element hosting sample helper. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/WpfNativeElementHostingExtension.cs | Delete WPF native element hosting extension. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/WpfExtensionsRegistrar.cs | Delete WPF extensibility registration. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/WpfDisplayInformationExtension.cs | Delete WPF display information extension. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/WpfApplicationViewExtension.cs | Delete WPF application view extension. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/UI/Xaml/Controls/WpfTextBoxView.cs | Delete WPF overlay textbox view plumbing. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/UI/Xaml/Controls/TextTextBoxView.cs | Delete WPF textbox view implementation. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/UI/Xaml/Controls/TextBoxViewExtension.cs | Delete WPF textbox view extension wrapper. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/UI/Xaml/Controls/PasswordTextBoxView.cs | Delete WPF password view implementation. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/UI/Xaml/Controls/NativeWindowFactoryExtension.cs | Delete WPF window factory extension. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/System/Profile/AnalyticsInfoExtension.cs | Delete WPF analytics info extension. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/Storage/Pickers/PickerHelpers.cs | Delete WPF picker helpers. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/Storage/Pickers/FolderPickerExtension.cs | Delete WPF folder picker extension. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/Storage/Pickers/FileSavePickerExtension.cs | Delete WPF save picker extension. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/Storage/Pickers/FileOpenPickerExtension.cs | Delete WPF open picker extension. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/Networking/Connectivity/WindowsConnectionProfileExtension.cs | Delete WPF connectivity extension. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/Helpers/Theming/WpfSystemThemeHelperExtension.cs | Delete WPF system theme helper. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/CursorExtensions.cs | Delete WPF cursor conversion helpers. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/ApplicationModel/DataTransfer/ClipboardNativeFunctions.cs | Delete WPF clipboard native hooks. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/ApplicationModel/DataTransfer/ClipboardExtensions.cs | Delete WPF clipboard extension implementation. |
| src/Uno.UI.Runtime.Skia.Wpf/Extensions/ApplicationModel/Core/CoreApplicationExtension.cs | Delete WPF CoreApplication extension. |
| src/Uno.UI.Runtime.Skia.Wpf/Constants/Win32Messages.cs | Delete WPF-specific Win32 constants. |
| src/Uno.UI.Runtime.Skia.Wpf/buildTransitive/Uno.WinUI.Runtime.Skia.Wpf.targets | Delete WPF build-transitive targets. |
| src/Uno.UI.Runtime.Skia.Wpf/buildTransitive/Uno.WinUI.Runtime.Skia.Wpf.props | Delete WPF build-transitive props. |
| src/Uno.UI.Runtime.Skia.Wpf/Builder/WpfHostBuilder.cs | Delete WPF host builder integration. |
| src/Uno.UI.Runtime.Skia.Wpf/Builder/IWindowsSkiaHostBuilder.cs | Delete WPF host builder interface. |
| src/Uno.UI.Runtime.Skia.Wpf/Builder/HostBuilder.cs | Delete WPF-specific UseWindows()/WpfApplication() builder surface. |
| src/Uno.UI.RemoteControl/HotReload/MetadataUpdater/HotReloadAgent.cs | Remove WPF-specific wording in exception comment. |
| src/Uno.UI.RemoteControl/HotReload/MetadataUpdater/ElementUpdaterAgent.cs | Remove WPF-specific wording in exception comment. |
| src/Uno.UI.Dispatching/AssemblyInfo.cs | Remove WPF-related InternalsVisibleTo. |
| src/Uno.UI.Composition/AssemblyInfo.skia.cs | Remove WPF-related InternalsVisibleTo. |
| src/Uno.UI.Composition/AssemblyInfo.cs | Remove WPF-related InternalsVisibleTo. |
| src/Uno.UI-Skia-only.slnf | Remove WPF projects from Skia-only solution filter. |
| src/Uno.Sdk/UnoTarget.cs | Remove legacy SkiaWpf target constant. |
| src/Uno.Sdk/Tasks/ImplicitPackagesResolver.cs | Remove WPF-specific runtime inference (but leaves unused TargetRuntime assignments—see review comment). |
| src/Uno.Sdk/targets/Uno.SingleProject.Desktop.targets | Remove WPF transitive dependency workaround targets. |
| src/Uno.Sdk/targets/Uno.Implicit.Packages.ProjectSystem.Legacy.targets | Remove implicit package refs for Skia.WPF heads. |
| src/Uno.Sdk/targets/Uno.Implicit.Packages.ProjectSystem.Desktop.targets | Remove WPF runtime implicit reference and RDP HW accel option. |
| src/Uno.Sdk/packages.json | Remove WPF runtime package from SDK manifest. |
| src/Uno.Foundation/AssemblyInfo.cs | Remove WPF InternalsVisibleTo. |
| src/Uno.Foundation.Logging/AssemblyInfo.cs | Remove WPF InternalsVisibleTo. |
| src/SolutionTemplate/UnoAppWinUILinuxValidation/UnoAppWinUILinuxValidation.Skia.WPF/Wpf/MainWindow.xaml.cs | Delete WPF template head code-behind. |
| src/SolutionTemplate/UnoAppWinUILinuxValidation/UnoAppWinUILinuxValidation.Skia.WPF/Wpf/MainWindow.xaml | Delete WPF template head XAML. |
| src/SolutionTemplate/UnoAppWinUILinuxValidation/UnoAppWinUILinuxValidation.Skia.WPF/Wpf/App.xaml.cs | Delete WPF template head App code-behind. |
| src/SolutionTemplate/UnoAppWinUILinuxValidation/UnoAppWinUILinuxValidation.Skia.WPF/Wpf/App.xaml | Delete WPF template head App XAML. |
| src/SolutionTemplate/UnoAppWinUILinuxValidation/UnoAppWinUILinuxValidation.Skia.WPF/app.manifest | Delete WPF template head manifest. |
| src/SolutionTemplate/UnoAppWinUI/UnoAppWinUI.Skia.WPF/Wpf/MainWindow.xaml.cs | Delete WPF template head code-behind. |
| src/SolutionTemplate/UnoAppWinUI/UnoAppWinUI.Skia.WPF/Wpf/MainWindow.xaml | Delete WPF template head XAML. |
| src/SolutionTemplate/UnoAppWinUI/UnoAppWinUI.Skia.WPF/Wpf/App.xaml.cs | Delete WPF template head App code-behind. |
| src/SolutionTemplate/UnoAppWinUI/UnoAppWinUI.Skia.WPF/Wpf/App.xaml | Delete WPF template head App XAML. |
| src/SolutionTemplate/UnoAppWinUI/UnoAppWinUI.Skia.WPF/UnoAppWinUI.Skia.WPF.csproj | Delete WPF template head project. |
| src/SolutionTemplate/UnoAppWinUI/UnoAppWinUI.Skia.WPF/app.manifest | Delete WPF template head manifest. |
| src/SolutionTemplate/MyAppXamlTrim/UnoSolutionTemplate.netcore.csproj | Remove WPF template artifacts from packaging. |
| src/SolutionTemplate/MyAppXamlTrim/MyAppXamlTrim.Skia.WPF/MyAppXamlTrim.Skia.WPF.csproj | Delete WPF trim template project. |
| src/SolutionTemplate/MyAppXamlTrim/MyAppXamlTrim.Skia.WPF/MainWindow.xaml.cs | Delete WPF trim template window code-behind. |
| src/SolutionTemplate/MyAppXamlTrim/MyAppXamlTrim.Skia.WPF/MainWindow.xaml | Delete WPF trim template window XAML. |
| src/SolutionTemplate/MyAppXamlTrim/MyAppXamlTrim.Skia.WPF/App.xaml.cs | Delete WPF trim template app code-behind. |
| src/SolutionTemplate/MyAppXamlTrim/MyAppXamlTrim.Skia.WPF/App.xaml | Delete WPF trim template app XAML. |
| src/SolutionTemplate/MyAppXamlTrim/MyAppXamlTrim.Skia.WPF/app.manifest | Delete WPF trim template manifest. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/UnoIslandsSamplesApp.Skia.Wpf.csproj | Delete WPF Islands sample head project. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/Properties/Settings.settings | Delete WPF sample settings file. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/Properties/Settings.Designer.cs | Delete WPF sample generated settings code. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/Properties/Resources.resx | Delete WPF sample resources. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/Properties/Resources.Designer.cs | Delete WPF sample generated resources code. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/Properties/launchSettings.json | Delete WPF sample launch settings. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/Properties/AssemblyInfo.cs | Delete WPF sample assembly info. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/MainWindow.xaml.cs | Delete WPF sample window code-behind. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/MainWindow.xaml | Delete WPF sample window XAML. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/Assets/SharedAssets.md | Delete WPF sample asset doc. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/App.xaml.cs | Delete WPF sample app code-behind. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/App.xaml | Delete WPF sample app XAML. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/app.manifest | Delete WPF sample manifest. |
| src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/App.config | Delete WPF sample config. |
| src/SamplesApp/UnoIslands.WinForms/UnoIslands.WinForms.csproj | Switch to $(NetPrevious)-windows in place of WPF-specific property. |
| src/SamplesApp/UnoIslands.Skia.Wpf/UnoIslands.Skia.Wpf.csproj | Delete WPF Islands sample project. |
| src/SamplesApp/UnoIslands.Skia.Wpf/Properties/Settings.settings | Delete WPF sample settings file. |
| src/SamplesApp/UnoIslands.Skia.Wpf/Properties/Settings.Designer.cs | Delete WPF sample generated settings code. |
| src/SamplesApp/UnoIslands.Skia.Wpf/Properties/Resources.resx | Delete WPF sample resources. |
| src/SamplesApp/UnoIslands.Skia.Wpf/Properties/Resources.Designer.cs | Delete WPF sample generated resources code. |
| src/SamplesApp/UnoIslands.Skia.Wpf/Properties/launchSettings.json | Delete WPF sample launch settings. |
| src/SamplesApp/UnoIslands.Skia.Wpf/Properties/AssemblyInfo.cs | Delete WPF sample assembly info. |
| src/SamplesApp/UnoIslands.Skia.Wpf/PersonViewModel.cs | Delete WPF sample view model. |
| src/SamplesApp/UnoIslands.Skia.Wpf/MainWindowViewModel.cs | Delete WPF sample view model. |
| src/SamplesApp/UnoIslands.Skia.Wpf/MainWindow.xaml.cs | Delete WPF sample window code-behind. |
| src/SamplesApp/UnoIslands.Skia.Wpf/MainWindow.xaml | Delete WPF sample window XAML. |
| src/SamplesApp/UnoIslands.Skia.Wpf/App.xaml.cs | Delete WPF sample app code-behind. |
| src/SamplesApp/UnoIslands.Skia.Wpf/App.xaml | Delete WPF sample app XAML. |
| src/SamplesApp/UnoIslands.Skia.Wpf/app.manifest | Delete WPF sample manifest. |
| src/SamplesApp/UnoIslands.Skia.Wpf/App.config | Delete WPF sample config. |
| src/SamplesApp/SamplesApp.Skia/SamplesApp.Skia.csproj | Remove WPF transitive-dependency workaround target. |
| src/SamplesApp/SamplesApp.Skia.Generic/SamplesApp.Skia.Generic.csproj | Remove WPF framework refs/imports and adjust WebView2 alias. |
| src/SamplesApp/SamplesApp.Skia.Generic/Program.cs | Remove WPF-specific host setup and .UseWindows() call. |
| src/SamplesApp/SamplesApp.Skia.Generic/app.manifest | Rename manifest assembly identity from WPF to Generic head. |
| src/AddIns/Uno.WinUI.Graphics3DGL/Windows/WinUINativeOpenGLWrapper.cs | Remove WPF-conditional implementation; keep WinUI wrapper only. |
| src/AddIns/Uno.WinUI.Graphics3DGL/Windows/WindowsRenderingNativeMethods.cs | Move to Windows-only namespace and remove WPF-conditional namespace. |
| src/AddIns/Uno.WinUI.Graphics3DGL/Uno.WinUI.Graphics3DGL.csproj | Compile WinAppSDK Windows sources from local Windows/ folder. |
| doc/articles/uno-publishing-desktop.md | Generalize publishing note (no longer WPF-specific). |
| doc/articles/uno-development/creating-runtime-tests.md | Remove SkiaWpf from documented runtime-test platforms. |
| doc/articles/toc.yml | Remove WPF Islands guide link from TOC. |
| Directory.Build.props | Remove WPF-specific TFM properties. |
| build/Uno.UI.Build.csproj | Remove WPF-related nuspec packing/diff entries. |
| build/test-scripts/run-windows-islands-skia-runtime-tests.ps1 | Delete WPF Islands runtime test runner script. |
| build/test-scripts/run-netcore-mobile-template-tests.ps1 | Remove WPF template build configurations. |
| build/PackageDiffIgnore.xml | Remove WPF-specific API diff ignore entries. |
| build/nuget/Uno.WinUI.XamlHost.Skia.Wpf.nuspec | Delete WPF Islands nuspec. |
| build/nuget/Uno.WinUI.Skia.Wpf.nuspec | Delete WPF Skia nuspec. |
| build/nuget/Uno.WinUI.nuspec | Remove WPF-specific references comment block. |
| build/filters/Uno.UI-packages-skia.slnf | Remove WPF projects from Skia package filter. |
| build/filters/Uno.UI-packages-all.slnf | Remove WPF projects from all-packages filter. |
| build/ci/tests/.azure-devops-tests-windows-skia.yml | Remove WPF Islands runtime test job. |
| build/ci/tests/.azure-devops-tests-skia-build.yml | Remove WPF Islands build + artifacts publishing steps. |
| build/ci/build/.azure-devops-build-native.yml | Remove Windows-targeting enablement comment/variable. |
| .github/labeler.yml | Remove WPF paths and label from labeler configuration. |
Files not reviewed (4)
- src/SamplesApp/UnoIslands.Skia.Wpf/Properties/Resources.Designer.cs: Language not supported
- src/SamplesApp/UnoIslands.Skia.Wpf/Properties/Settings.Designer.cs: Language not supported
- src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/Properties/Resources.Designer.cs: Language not supported
- src/SamplesApp/UnoIslandsSamplesApp.Skia.Wpf/Properties/Settings.Designer.cs: Language not supported
Comments suppressed due to low confidence (2)
src/Uno.Sdk/Tasks/ImplicitPackagesResolver.cs:164
TargetRuntimeis assigned in the new TFM-parsing logic but is never read anywhere in this task (and the private field is otherwise unused). With warnings-as-errors enabled, this is likely to produce a compiler warning (field assigned but value never used). Consider removing theTargetRuntimefield and its assignments entirely, or reintroduce its usage where runtime-specific behavior is required.
src/Uno.UI.RuntimeTests/Helpers/ConditionalTestHelper.cs:67RuntimeTestPlatformsincludesSkiaFrameBuffer, butIsCurrentTargetdoesn't handle it. SinceGetCurrentPlatform()iterates over all single-flag values, this will hit the default case and throw on FrameBuffer runs. Add aRuntimeTestPlatforms.SkiaFrameBuffercase (matching the implementation inRuntimeTestsPlatformHelper) to avoid breaking conditional test evaluation on that platform.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23261/wasm-skia-net9/index.html |
|
The build 212332 found UI Test snapshots differences: Details
|
|
|
GitHub Issue: closes #23260
PR Type:
✨ Feature
What changed? 🚀
Completely removes the WPF-based Skia desktop runtime (
Uno.WinUI.Skia.Wpf/Uno.WinUI.Runtime.Skia.Wpf) and the WPF Islands hosting control (Uno.WinUI.XamlHost.Skia.Wpf). These have been superseded by the native Skia Desktop runtimes (Win32,X11,MacOS,Linux.FrameBuffer).Removed
Uno.WinUI.Skia.WpfandUno.WinUI.Runtime.Skia.WpfNuGet packages and underlying projects (~62 source files).Uno.WinUI.XamlHost.Skia.Wpf(WPF IslandsUnoXamlHost) package and project.UnoIslands.Skia.Wpf,UnoIslandsSamplesApp.Skia.Wpf,UnoAppWinUI.Skia.WPF,UnoAppWinUILinuxValidation.Skia.WPF,MyAppXamlTrim.Skia.WPF.RuntimeTestPlatforms.SkiaWpfandUnoTarget.SkiaWpfenum values, plus two WPF-specific runtime tests.NetPreviousWpf,NetCurrentWpf,NetWpfPreviousAndCurrent)._UnoRemoveTransitiveWPFDependency,_UnoRemoveRuntimeFrameworkInRuntimeConfigurationFiles).doc/articles/guides/uno-islands.md(WPF Islands guide) and its asset folder..slnx,Uno.UI.Build.csproj, labeler config, packages.json andPackageDiffIgnore.xml.InternalsVisibleTodeclarations across the affected assemblies.Kept
Uno.UI.XamlHostbase library and its non-WPF Islands samples (UnoIslands.Skia,UnoIslandsSamplesApp.Skia).doc/articles/wpf-migration.mdanddoc/articles/wpf-winui-equivalents.md— they help WPF developers adopt Uno/WinUI and remain valuable regardless of Uno's WPF target._UnoWebView2RemoveWpfMSBuild target — kept defensively becauseMicrosoft.Web.WebView2still ships a WPF variant that can leak through transitive NuGet references.Refactors
WindowsRenderingNativeMethods.cs,WinUINativeOpenGLWrapper.cs) that were previously hosted underUno.UI.Runtime.Skia.Wpfare relocated undersrc/AddIns/Uno.WinUI.Graphics3DGL/Windows/so the Graphics3DGL package continues to build for the WinAppSDK target.SamplesApp.Skia.Generic(the canonical Skia desktop sample head) was cleaned of all WPF coupling: removed the WPFFrameworkReference,System.Windows.ThemeInfoassembly attribute, WPFProjectReferenceand transitive imports, WPF-specificMainWindowActivatedhandler, and the.UseWindows(b => b.WpfApplication(...))call.Validation
Uno.UI.Skia,Uno.UI.XamlHost.Skia,Uno.WinUI.Graphics3DGL,Uno.UI.RuntimeTests.Skia,SamplesApp.Skia,SamplesApp.Skia.Generic,UnoIslands.Skia,Uno.UI.Tests,Uno.Sdkall build clean againstnet10.0.PR Checklist ✅
Screenshots Compare Test Runresults.Breaking change impact and migration
Apps currently targeting
Uno.WinUI.Skia.Wpfmust migrate to one of the native Skia Desktop runtimes:Uno.WinUI.Runtime.Skia.Win32Uno.WinUI.Runtime.Skia.X11orUno.WinUI.Runtime.Skia.Linux.FrameBufferUno.WinUI.Runtime.Skia.MacOSThe recommended path is the unified
net*-desktopTFM with the Uno SDK, which automatically pulls in all desktop runtimes.Apps using
UnoXamlHostto embed Uno controls inside an existing WPF application must rehost into a standalone Uno application using one of the native Skia desktop runtimes.🤖 Generated with Claude Code