Unity-Technologies/UnityCsReference · error · NotSupportedException

PlayerSettings.storeTileWideLogo180 is deprecated. Use SetVi

Error message

PlayerSettings.storeTileWideLogo180 is deprecated. Use SetVisualAssetsImage() instead.

What it means

PlayerSettings.WSA.storeTileWideLogo180 is a deprecated property representing the wide 310x150 tile logo displayed in the Windows Store listing and on the Start menu at 180% scale. Note: the 180% scale is itself deprecated in WSAImageScale (not used in Universal Windows Platform); prefer _100, _125, _150, _200, or _400. It is decorated with [Obsolete("Use GetVisualAssetsImage()/SetVisualAssetsImage()", true)], making direct access a compile-time error (CS0619). The set accessor additionally throws NotSupportedException at runtime to catch reflection-based or dynamically dispatched access. The replacement API is SetVisualAssetsImage(WSAImageType.UWPWide310x150Logo, WSAImageScale._180) for this specific accessor.

Source

Thrown at Editor/Mono/PlayerSettingsWSA.cs:279

                    throw new NotSupportedException("PlayerSettings.storeTileWideLogo140 is deprecated. Use GetVisualAssetsImage() instead.");
                }
                set
                {
                    throw new NotSupportedException("PlayerSettings.storeTileWideLogo140 is deprecated. Use SetVisualAssetsImage() instead.");
                }
            }

            [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
            [Obsolete("Use GetVisualAssetsImage()/SetVisualAssetsImage()", true)]
            public static string storeTileWideLogo180
            {
                get
                {
                    throw new NotSupportedException("PlayerSettings.storeTileWideLogo180 is deprecated. Use GetVisualAssetsImage() instead.");
                }
                set
                {
                    throw new NotSupportedException("PlayerSettings.storeTileWideLogo180 is deprecated. Use SetVisualAssetsImage() instead.");
                }
            }

            [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
            [Obsolete("Use GetVisualAssetsImage()/SetVisualAssetsImage()", true)]
            public static string storeTileSmallLogo80
            {
                get
                {
                    throw new NotSupportedException("PlayerSettings.storeTileSmallLogo80 is deprecated. Use GetVisualAssetsImage() instead.");
                }
                set
                {
                    throw new NotSupportedException("PlayerSettings.storeTileSmallLogo80 is deprecated. Use SetVisualAssetsImage() instead.");
                }
            }

            [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]

View on GitHub (pinned to 225b0fbdb5)

Solutions

  1. Replace the property assignment with PlayerSettings.WSA.SetVisualAssetsImage(imagePath, WSAImageType.UWPWide310x150Logo, WSAImageScale._180).
  2. If the 180% scale is deprecated (80/140/180), switch to a UWP-supported scale such as WSAImageScale._100 or WSAImageScale._200.
  3. If the calling code is in a shared library, wrap the new call in a #if UNITY_2019_4_OR_NEWER (or appropriate version) preprocessor guard to maintain backward compatibility.
  4. Search the entire solution for all references to the deprecated property (including in .asmdef-referenced assemblies) to ensure no compile-time or reflection-based access remains.

Example fix

// before
PlayerSettings.WSA.storeTileWideLogo180 = "Assets/Images/Logo.png";
// after
PlayerSettings.WSA.SetVisualAssetsImage(
    "Assets/Images/Logo.png",
    WSAImageType.UWPWide310x150Logo,
    WSAImageScale._180);
Defensive patterns

Strategy: validation

Validate before calling

// Validate the property is not among the deprecated set before reflection access
var prop = typeof(PlayerSettings.WSA).GetProperty("storeTileWideLogo180");
if (prop != null && prop.GetCustomAttribute<ObsoleteAttribute>()?.IsError == true)
{
    // Use the replacement API instead
    PlayerSettings.WSA.SetVisualAssetsImage(
        imagePath, WSAImageType.UWPWide310x150Logo, WSAImageScale._180);
}

Try / catch

try
{
    // Deprecated property access via reflection
    typeof(PlayerSettings.WSA)
        .GetProperty("storeTileWideLogo180")?.SetValue(null, imagePath);
}
catch (NotSupportedException ex) when (ex.Message.Contains("deprecated"))
{
    // Fallback to the replacement API
    PlayerSettings.WSA.SetVisualAssetsImage(
        imagePath, WSAImageType.UWPWide310x150Logo, WSAImageScale._180);
}

Prevention

When it happens

Trigger: Accessing PlayerSettings.WSA.storeTileWideLogo180 via its set accessor. Assigning a value, e.g. PlayerSettings.WSA.storeTileWideLogo180 = "Assets/Logo.png"; triggers the NotSupportedException from the set block. Compile-time access is blocked by the [Obsolete(..., true)] attribute (error CS0619). Runtime exceptions only surface when the property is reached through reflection, dynamic invocation, or IL that bypasses the compiler check.

Common situations: Upgrading a Unity project from a version that supported these Windows 8.1-era store image properties to a UWP-only build. Build scripts, CI/CD pipelines, or editor extensions that batch-configure WSA visual assets using the old individual-property API. Third-party plugins or asset store packages that reference PlayerSettings.WSA.storeTileWideLogo180. Code migrated from Windows 8.1 Metro/WinRT templates that hardcoded DPI-scaled tile logos.

Related errors


AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13). Data as JSON: /api/errors/deeda689aefda805. Report an issue: GitHub.