Skip to content

Experiment: Upgrade WASDK — 1.7 for net9, 1.8 WinUI subpackage for net10#3632

Draft
mattleibow wants to merge 2 commits intomainfrom
dev/issue-3372-wasdk-upgrade
Draft

Experiment: Upgrade WASDK — 1.7 for net9, 1.8 WinUI subpackage for net10#3632
mattleibow wants to merge 2 commits intomainfrom
dev/issue-3372-wasdk-upgrade

Conversation

@mattleibow
Copy link
Copy Markdown
Contributor

@mattleibow mattleibow commented Apr 2, 2026

Summary

Upgrade SkiaSharp.Views.WinUI WASDK dependency from 1.4 with per-TFM versioning:

TFM Package Version Notes
net9.0-windows + native C++ Microsoft.WindowsAppSDK 1.7.250909003 Full metapackage (matches latest MAUI 9.0.100 workload, manifest 9.0.120)
net10.0-windows Microsoft.WindowsAppSDK.WinUI 1.8.250906003 WinUI subpackage only (experimental)

⚠️ Not releasable yet

The Microsoft.WindowsAppSDK.WinUI subpackage only exists starting at 1.8. The VS-shipped MAUI workloads for both .NET 9 and .NET 10 (SDK band 9.0.100 manifest 9.0.120, SDK band 10.0.100 manifest 10.0.20) pin to WASDK 1.7. MAUI 10.0.40 moved to 1.8 but that's not in released workloads yet.

This PR is experimental - the CI artifacts can be used to test compatibility. We can't release until MAUI ships a workload update on 1.8.

What we're testing

  1. Does Microsoft.WindowsAppSDK.WinUI resolve all types SkiaSharp.Views.WinUI needs? (XAML controls, SwapChainPanel, SKXamlCanvas, etc.)
  2. Does mixing the 1.8 WinUI subpackage with a MAUI app still on 1.7 (full metapackage) cause version conflicts? The subpackage pulls in Base, Foundation, InteractiveExperiences, and WebView2 - we need to check these don't clash with what MAUI brings.
  3. Is the native C++/WinRT project compatible at WASDK 1.7? It only uses stable WinRT types (IBuffer, IPropertySet).
  4. No guarantee mixing sub-package versions works. The full metapackage forces a blessed version set. Moving away from it means we need to validate that consumers using the full metapackage at a different version don't hit conflicts.

What Microsoft.WindowsAppSDK.WinUI brings in

Instead of the full metapackage, it depends on:

  • Microsoft.Web.WebView2 (>= 1.0.3179.45)
  • Microsoft.WindowsAppSDK.Base
  • Microsoft.WindowsAppSDK.Foundation
  • Microsoft.WindowsAppSDK.InteractiveExperiences

SkiaSharp only needs the WinUI XAML types - so this should be sufficient.

MAUI workload version research

Workload Manifest Version MAUI Core WASDK
MAUI 9.0.100 (latest) 9.0.120 9.0.120 1.7.250909003
MAUI 10.0.100 (latest) 10.0.20 10.0.20 1.7.250909003
MAUI 10.0.40 (NuGet) - 10.0.40 1.8.251106002 (not in VS workloads)

Context

Relates to #3372 - request to reduce SkiaSharp.Views.WinUI dependency from the full Microsoft.WindowsAppSDK metapackage to just the WinUI piece.

Upgrade SkiaSharp.Views.WinUI WASDK dependency from 1.4 to per-TFM versions:
- net9.0-windows: Microsoft.WindowsAppSDK 1.7 (full metapackage, matches latest MAUI 9.0.100 workload)
- net10.0-windows: Microsoft.WindowsAppSDK.WinUI 1.8 (subpackage, experimental)
- Native C++/WinRT project: bumped to 1.7 (matches net9)

This is experimental and not releasable until MAUI workloads ship with
WASDK 1.8. The PR artifacts can be used to test compatibility.

Relates to #3372

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@mattleibow mattleibow force-pushed the dev/issue-3372-wasdk-upgrade branch from 4148315 to 0417bb9 Compare April 2, 2026 09:42
@mattleibow mattleibow changed the title Experiment: Upgrade WASDK — 1.6 for net9, 1.8 WinUI subpackage for net10 Experiment: Upgrade WASDK — 1.7 for net9, 1.8 WinUI subpackage for net10 Apr 2, 2026
@mattleibow
Copy link
Copy Markdown
Contributor Author

Testing scenarios

Once CI artifacts are available, here's what needs to be tested:

1. Build verification (does the WinUI subpackage resolve everything?)

  • CI build passes for SkiaSharp.Views.WinUI targeting net10.0-windows with Microsoft.WindowsAppSDK.WinUI 1.8
  • CI build passes for SkiaSharp.Views.WinUI targeting net9.0-windows with Microsoft.WindowsAppSDK 1.7
  • CI build passes for SkiaSharp.Views.Uno.WinUI (which P2P-references SkiaSharp.Views.WinUI on -windows)
  • CI build passes for SkiaSharp.Views.Maui.Core and SkiaSharp.Views.Maui.Controls on -windows TFMs
  • Native C++/WinRT project builds with WASDK 1.7

2. MAUI app integration (version conflict check)

Create a .NET 10 MAUI app using the default template with Microsoft.Maui.Controls 10.0.20 (which brings Microsoft.WindowsAppSDK >= 1.7):

  • Add SkiaSharp.Views.Maui.Controls from the CI NuGet artifacts
  • dotnet restore succeeds without version conflicts between WASDK 1.7 (from MAUI) and 1.8 WinUI subpackage (from SkiaSharp)
  • dotnet build succeeds for net10.0-windows10.0.19041.0
  • App launches and an SKCanvasView renders correctly
  • App launches and an SKSwapChainPanel renders correctly

3. MAUI .NET 9 app (baseline check)

Create a .NET 9 MAUI app with Microsoft.Maui.Controls 9.0.120:

  • Add SkiaSharp.Views.Maui.Controls from the CI NuGet artifacts
  • dotnet restore and dotnet build succeed for net9.0-windows10.0.19041.0
  • SKCanvasView renders correctly

4. Standalone WinUI app (no MAUI, direct SkiaSharp.Views.WinUI)

Create a plain WinUI 3 desktop app:

  • Reference SkiaSharp.Views.WinUI from CI artifacts targeting net10.0-windows
  • App builds and SKXamlCanvas renders
  • Try with the app referencing Microsoft.WindowsAppSDK 1.7 (full metapackage) — does NuGet resolve without conflict?
  • Try with the app referencing Microsoft.WindowsAppSDK 1.8 (full metapackage) — does it work with the subpackage from SkiaSharp?

5. Uno Platform app

Create an Uno Platform app targeting -windows:

  • Reference SkiaSharp.Views.Uno.WinUI from CI artifacts
  • Uno manages its own WASDK version centrally — does it conflict with SkiaSharp's 1.8 WinUI subpackage?
  • Build and render test on Windows head

The old CppWinRT 2.0.230706.1 (paired with WASDK 1.4) fails to generate
WinRT projections against the WASDK 1.7 metadata.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant