ErrLookup › Background articles › NotSupportedException from Unity PlayerSettings.WSA: deprecated phone/store tile members that throw unconditionally

NotSupportedException from Unity PlayerSettings.WSA: deprecated phone/store tile members that throw unconditionally

`NotSupportedException` is thrown by accessors of removed Windows Phone 8.1 and deprecated store visual-asset properties on `PlayerSettings.WSA` (for example `phoneSplashScreenImage`, `phoneMediumTile140`, `storeTileWideLogo140`). A developer meets it after touching a member that Unity gutted during its Windows Phone 8.1 to Universal Windows Platform migration: the member still exists, but its get and set bodies only `throw new NotSupportedException(...)`, while the message points at the replacement API. Direct compiled access is normally blocked first by `[Obsolete(..., true)]` (compile-time error CS0619), so the runtime throw surfaces mainly through reflection, dynamic dispatch, or stale assemblies that bypass the compiler check.

Distilled from 577 documented records across 56 repositories.

Background

NotSupportedException here is a deliberate landmine planted by Unity on its own editor API surface, not a generic runtime fault. When Unity unified its Windows Phone 8.1 image set onto the Universal Windows Platform, it gutted every `phone*` tile/icon/splash member and the deprecated `store*` scale members (the `_80`, `_140`, `_180`, and phone `_140/_180/_240` scales are not valid UWP asset sizes). Rather than delete the properties outright, Unity left them in place as stubs whose get and set accessors unconditionally execute `throw new NotSupportedException(...)` and whose message names the replacement: `GetVisualAssetsImage()` / `SetVisualAssetsImage()`. The throw is therefore a migration signal, not a recoverable runtime condition. The production code path is to stop calling the member, not to catch the exception.,What makes this family distinctive is the pairing of a compile-time guard with a runtime backstop. Each member is annotated `[Obsolete("Use GetVisualAssetsImage()/SetVisualAssetsImage()", true)]`, so normal compiled C# never reaches the accessor at all; the reference fails to build with error CS0619. The `NotSupportedException` only fires when that guard is bypassed: reflection (for example `PropertyInfo.GetValue` / `SetValue`), dynamic or member-access dispatch, emitted IL, or precompiled assemblies (for instance older packages or `.asmdef`-referenced code) that were not recompiled against the current Unity version. From the caller's side the symptom is therefore either a build error pointing at the deprecated property, or a runtime throw in a reflection-heavy code path that enumerates `PlayerSettings.WSA` members.,Across the documented records the pattern is uniform: the exception is always thrown by a deprecated `PlayerSettings.WSA` visual-asset member, the message always points at `GetVisualAssetsImage()` (for a get) or `SetVisualAssetsImage()` (for a set), and the fix always maps the old property name onto a `(WSAImageType, WSAImageScale)` pair. The differences between records are only in which member and which scale is involved. The `phone*` members map to UWP logo types (`UWPSquare44x44Logo`, `UWPSquare71x71Logo`, `UWPSquare150x150Logo`, `UWPWide310x150Logo`, `SplashScreenImage`) at supported scales `_100/_125/_150/_200/_400`; the deprecated store and phone scale suffixes themselves have no UWP equivalent, so the source image must be re-exported at a supported scale rather than handed to the old scale enum value. Because every record in this family comes from the same Unity API migration, the remediation is mechanical and shared, and the runtime throw should be read as a migration prompt rather than a bug to diagnose.

Common causes

What usually fixes it

Documented occurrences

…and 557 more across the corpus — use search.

Honest provenance: generated on 2026-08-13 from AI-assisted analysis of the linked records. See how records are made.