Errors, symptoms and code search
Part of Migrating to Uno Platform 7.0. Use this page to jump straight from a build error, a symptom or a piece of your code to the section that explains it.
Build errors and warnings
Look up the code or message you got, then follow the link for the fix.
| Code or message | Cause | Details |
|---|---|---|
NU1202 |
A project still targets net9.0-* |
.NET 9 is no longer supported |
NU1605 |
WinAppSdkVersion is pinned to 1.x |
Windows App SDK minimum |
CS1705 on WinRT.Runtime |
WindowsSdkPackageVersion selects a projection older than .87 |
Windows SDK projection |
MSB4100 |
A condition uses the removed IsMacCatalyst or IsIOSOrCatalyst |
Mac Catalyst is removed |
CS0104 on ScrollViewer, ComboBox or ScrollContentPresenter |
using Uno.UI.Xaml.Controls; next to the WinUI namespace |
Uno.UI.Toolkit types |
ThumbnailMode not found |
Windows.Storage.ThumbnailMode is removed |
Windows.Storage.ThumbnailMode |
CS7036 on GetTemplateChild |
Control.GetTemplateChild is no longer public, so an extension method bound instead |
Control.GetTemplateChild |
UNOB0017 |
Reference to Uno.WinUI.WebAssembly or Uno.WinUI.Runtime.WebAssembly |
Uno.WinUI.WebAssembly |
UNOB0020 |
A multi-targeted library was built against 6.x | Platform targeting |
UNOB0022 |
The SingleProject property |
The Uno.Sdk is required |
UNOB0023 |
A runtime-enabled package provided no runtime assembly | Runtime identifier properties, Cross-runtime libraries |
UNOB0024 |
UnoRuntimeIdentifier or a sibling property is set |
Runtime identifier properties |
UNOB0025 |
Runtime-enabled packages without a runtime host | Runtime identifier properties |
UNOB0026 |
A referenced assembly was built for a native renderer | Runtime identifier properties |
UNOB0027 |
A removed file suffix such as *.Apple.cs |
Removed file suffixes |
UNOB0028 |
UnoSplashScreenColor |
UnoSplashScreenColor removed |
UNOB0029 |
An app head doesn't use the Uno.Sdk |
The Uno.Sdk is required |
UNOB0030 |
A library lists SkiaRenderer |
Skia on libraries |
UNOB0033 |
A leftover Platforms/MacCatalyst folder |
Mac Catalyst is removed |
UNOB0034, WMC0001: Unknown type 'LottieVisualSource' |
Lottie XAML on a Windows target without CommunityToolkit.WinUI.Lottie |
Lottie |
UNOB0035 |
UnoFeatures lists Prism |
Prism Uno Feature removed |
UXAML0001 |
Binding an attached property whose owner type can't be found | Attached property owners |
UXAML0006 |
A clr-namespace: declaration |
clr-namespace: xmlns form |
UXAML0007 |
A removed conditional XAML prefix such as skia: |
Removed XAML prefixes |
Uno0001 |
A not-implemented API, which can fail builds that set TreatWarningsAsErrors |
Uno0001 |
Property 'AreDimensionsConstrained' does not exist |
Layout-constraint members are removed | Layout-constraint optimization |
XAML build failure on IsNativeStyle |
The attribute is no longer recognized | Native-style declaration |
XAML build failure on ControlsResourcesVersion |
The member is removed | Fluent resource-version types |
Failures at run time
| Symptom | Cause | Details |
|---|---|---|
| No drawing backend could be resolved at startup | A head without the Uno.Sdk implicit packages got Uno.WinUI.Composition.Skia only through a library |
Skia on libraries |
FileNotFoundException from SkiaSharp.Views.Windows.GlobalStaticResources.Initialize() |
Explicit SkiaSharp.Views.Uno.WinUI reference |
SkiaSharp.Views.Uno.WinUI |
Could not load type … from assembly 'Uno.UI' on an MRT Core type |
A library or assembly-qualified name still targets 6.x | MRT Core |
| Failures in code from a multi-targeted library | A stale net*-ios or net*-android asset built against 6.x is now deployed |
Platform targeting |
(MyEnum)GetValue(...) throws |
Custom value-type dependency properties now default to null |
Custom value types default to null |
XamlParseException from XamlReader.Load or Hot Reload |
A clr-namespace: declaration |
clr-namespace: xmlns form |
| Crash on launch on Android, where the app used to start degraded | Startup failures now propagate | Android head uses the host builder |
| Failure at run time after pinning SkiaSharp | Managed and native SkiaSharp packages at different versions | SkiaSharp 4 is the default |
Changes the compiler won't catch
These build cleanly and only show up when you run the app.
| What you notice | Why | Details |
|---|---|---|
| iOS or tvOS settings seem to have disappeared after updating | Settings moved to a new store and aren't migrated for you | Application settings |
ItemClickCommand="{Binding}" or Command="{Binding}" on a list does nothing |
The XAML still compiles, but the property is gone | ItemClickCommand |
Markup under a skia: or not_skia: style prefix applies everywhere, or nowhere |
A removed prefix is treated as an ordinary namespace | Removed XAML prefixes |
#if __IOS__ or ios: code in a library runs for the first time |
Platform assets of a library are now deployed | Platform targeting |
A *.skia.cs file compiles on mobile and WebAssembly too |
The suffix now covers every target except WinAppSDK | Platform targeting |
Number and date formats don't follow PrimaryLanguageOverride until restart |
The setter no longer swaps the culture | UseLegacyPrimaryLanguageOverride |
| The backdrop material is hidden | Backgrounds are no longer made transparent for you | SystemBackdrop |
A custom ContentControl renders nothing |
A control with no template no longer bypasses the ContentPresenter |
ContentControl subclasses |
| A selected list item isn't scrolled into view | Only a focused list brings a new selection into view | List selection |
| A long press no longer clicks or selects | A touch or pen hold is no longer a tap | Holds |
| A drag or splitter lags the pointer slightly | No ManipulationDelta right after ManipulationStarted |
Manipulation deltas |
| A page loses its state on Back | Pages follow NavigationCacheMode, if the app set UseWinUIBehavior to false |
Frame.UseWinUIBehavior |
| Content draws under the Android status bar | Apps are always edge-to-edge | IsEdgeToEdgeEnabled |
| A popup no longer closes on outside tap, or content alignment changed | A compatibility flag the app set is gone | Compatibility flags, UseLegacyContentAlignment |
| An MSIX package installed outside the Microsoft Store fails to install or start | Packaged heads depend on the Windows App Runtime instead of bundling it | Packaged Windows heads |
Suspending no longer fires on desktop |
Skia Desktop doesn't report suspension | App lifecycle events |
OnLaunched sees Launch for a URL or shortcut launch on iOS |
A cold-start activation arrives after OnLaunched |
Activation |
A relative WebView2.Source or NavigateUri silently fails |
Relative URIs now compile to ms-resource:///Files/… |
Relative URIs |
| Fluent controls have no template | They come only from XamlControlsResources |
Fluent styles |
| Letterbox bars are transparent, not black | MediaPlayerElement no longer paints a backdrop |
MediaPlayerPresenter |
| Rendering differences or more memory on some GPUs | Vulkan is the default on Android, Linux and Windows | Vulkan |
| An Android drawable no longer resolves | Retargeted drawables keep their file extension | Retargeted drawables, ms-appx:/// lookups |
| A WebAssembly sign-in timeout looks different | A timeout returns ErrorHttp instead of UserCancel |
WebAuthenticationBroker |
Search your code
Each row is a literal string to search for across your C#, XAML and MSBuild files. Any match means that section applies to you, so this is the quickest way to scope an upgrade by hand or with an AI agent. The list covers the most common names rather than every change, so the compiler still has the last word.
| Search for | Go to |
|---|---|
Uno.UI.Toolkit |
Uno.UI.Toolkit types |
Runtime.Skia, MediaPlayer.Skia, WebView.Skia, SkiaHost, SkiaHostBuilder |
Runtime host renames |
Microsoft.UI.Xaml.NativeApplication, Microsoft.UI.Xaml.ApplicationActivity, NativePage, AppBuilder |
Runtime host renames, Android head |
Microsoft.Windows.ApplicationModel.Resources in a string, , Uno.UI", , Uno" |
MRT Core |
OnActivated, unoprotocolactivation |
Activation |
.Suspending, .Resuming, .EnteredBackground, .LeavingBackground, RequiresPointerMode |
App lifecycle events |
LocalSettings, RoamingSettings, StandardUserDefaults |
Application settings |
ContextHelper, GetBaseActivityEvents |
Android context APIs |
FeatureConfiguration, PrimaryLanguageOverride |
Removed feature flags |
Sdk="Microsoft.NET.Sdk" on an app head, SingleProject, uap10.0 |
The Uno.Sdk is required |
net9.0 |
.NET 9 is no longer supported |
maccatalyst, __MACCATALYST__, IsMacCatalyst, IsIOSOrCatalyst, MacCatalystProjectFolder |
Mac Catalyst is removed |
SupportedOSPlatformVersion, TargetPlatformMinVersion |
Minimum OS versions |
WindowsSdkPackageVersion |
Windows SDK projection |
UnoDisableHotRestartHelperGeneration |
iOS Hot Restart |
UnoSplashScreenColor |
UnoSplashScreenColor removed |
UnoRuntimeIdentifier, UnoUIRuntimeIdentifier, UnoWinRTRuntimeIdentifier |
Runtime identifier properties |
HAS_UNO_SKIA, __UNO_SKIA, UNO_REFERENCE_API |
Removed symbols, Symbols and project shape |
skia:, netstdref:, androidskia:, iosskia:, macos:, not_mux:, xamarin:, legacy: |
Removed XAML prefixes |
Files named *.Apple.cs, *.reference.cs, *.iOSmacOS.cs, *.skia.cs |
Removed file suffixes, Platform targeting |
Prism, Lottie in UnoFeatures; Uno.WinUI.Lottie |
Prism, Lottie |
SKXamlCanvas, SKSwapChainPanel, SkiaSharp.Views.Uno.WinUI |
SkiaSharp.Views.Uno.WinUI |
SKPaint, SKCanvas, SkiaSharpVersion |
SkiaSharp 4 is the default |
GLCanvasElement, CullFaceMode |
GLCanvasElement |
UseVulkanOn, UseOpenGLOn, PreferGLESOverGLOnX11 |
Vulkan |
ConfigureUniversalImageLoader, bundle:// |
Uno.UniversalImageLoader, bundle:// |
AdaptNative, HtmlId, HtmlElementAttribute, SetHtmlAttribute, RegisterHtmlEventHandler |
Native element hosting |
BindableView, BindableUIView, Android.Views.View, UIKit.UIView |
Native base classes |
NativeDefault, IsNativeStyle, UseNativePopup, AreDimensionsConstrained |
Native rendering types and helpers |
IJSObject, InvokeJSWithInterop, TSInteropMessage |
WebAssembly interop |
ItemClickCommand, and Command= on ListView or GridView |
ItemClickCommand |
GetTemplateChild, VisualTreeHelper.GetChildren |
GetTemplateChild, GetChildren |
WindowSizeChangedEventHandler, VisibilityChangedEventArgs |
Window events |
Thickness.Empty, CornerRadius.None, Brush brush =, GridLength width = |
Implicit conversions |
new StackPanel {, new Border {, new ScrollViewer { |
Collection initializers |
IAnimatedVisualSource, LottieVisualSourceBase |
IAnimatedVisualSource |
DependencyPropertyValuePrecedences |
DependencyPropertyValuePrecedences |
IsLocalResource |
IsLocalResource is renamed |
new Control(), new Panel(), new Timeline(), new DataTemplate(, FrameworkTemplateBuilder |
Constructor accessibility |
is ContentControl, is TextBox, is Border |
Type-hierarchy changes |
.Background on a FrameworkElement, TextBlock, Image or Shape; FrameworkElement.BackgroundProperty |
Background |
ref thickness., Duration.Type, .GridUnitType =, GuidHelper.Equals, .LoadContent() |
WinRT projection alignment |
clr-namespace:, legacy:ListView, legacy:GridView |
clr-namespace: xmlns form, legacy: lists |
XamlDefault, XamlAppBar, DefaultFlyoutPresenter, BasedOn="{StaticResource Xaml |
XamlDefault* styles |
themeresources_v2, XamlControlsResourcesV2, ControlsResourcesVersion |
Fluent theme resources, Resource-version types |
SystemBackdrop |
SystemBackdrop |
Resource.Drawable, FindResourceId |
Retargeted drawables |
WithUnoHelpers, WebAuthenticationBroker |
Authentication on WebAssembly |
Related pages
- Full checklist for every migration task in one list.
- Removed public APIs for removed types and members.
- Behavior changes to re-test for what to re-test.
- Upgrade steps to return to the main path.