From 7526415f8a504737561bc0d4d276786ddac05109 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Thu, 3 Oct 2024 10:34:37 -0500 Subject: [PATCH 1/3] [blazorwebview] align `SupportedOSPlatform` attribute with templates Context: https://learn.microsoft.com/dotnet/maui/supported-platforms To get the appropriate warnings from Roslyn analyzers, we should align the `SupportedOSPlatform` attribute for public-facing `BlazorWebView` APIs for iOS and Android: * `BlazorWebView` class * `BlazorWebViewHandler` class * `BlazorWebViewServiceCollectionExtensions.AddMauiBlazorWebView()` which is used in `MauiProgram.cs` to register `BlazorWebView`. I used the same numbers set in: * `src\Templates\src\templates\maui-blazor\MauiApp.1.csproj` * `src\Templates\src\templates\maui-blazor-solution\MauiApp.1\MauiApp.1.csproj` --- src/BlazorWebView/src/Maui/BlazorWebView.cs | 12 ++++++++++++ src/BlazorWebView/src/Maui/BlazorWebViewHandler.cs | 4 +++- .../BlazorWebViewServiceCollectionExtensions.cs | 4 ++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/BlazorWebView/src/Maui/BlazorWebView.cs b/src/BlazorWebView/src/Maui/BlazorWebView.cs index 15922e86b364..db497f507ff9 100644 --- a/src/BlazorWebView/src/Maui/BlazorWebView.cs +++ b/src/BlazorWebView/src/Maui/BlazorWebView.cs @@ -1,5 +1,6 @@ using System; using System.Threading.Tasks; +using System.Runtime.Versioning; using Microsoft.AspNetCore.Components.Web; using Microsoft.Extensions.FileProviders; using Microsoft.Maui; @@ -10,8 +11,19 @@ namespace Microsoft.AspNetCore.Components.WebView.Maui /// /// A that can render Blazor content. /// +#if ANDROID + [SupportedOSPlatform(AndroidSupportedOSPlatformVersion)] +#elif IOS + [SupportedOSPlatform(iOSSupportedOSPlatformVersion)] +#endif public partial class BlazorWebView : View, IBlazorWebView { + // NOTE: keep these in sync with: + // * src\Templates\src\templates\maui-blazor\MauiApp.1.csproj + // * src\Templates\src\templates\maui-blazor-solution\MauiApp.1\MauiApp.1.csproj + internal const string AndroidSupportedOSPlatformVersion = "android24.0"; + internal const string iOSSupportedOSPlatformVersion = "ios15.0"; + internal static string AppHostAddress { get; } = HostAddressHelper.GetAppHostAddress(); private readonly JSComponentConfigurationStore _jSComponents = new(); diff --git a/src/BlazorWebView/src/Maui/BlazorWebViewHandler.cs b/src/BlazorWebView/src/Maui/BlazorWebViewHandler.cs index 052a96f5586f..4281572fb116 100644 --- a/src/BlazorWebView/src/Maui/BlazorWebViewHandler.cs +++ b/src/BlazorWebView/src/Maui/BlazorWebViewHandler.cs @@ -9,7 +9,9 @@ namespace Microsoft.AspNetCore.Components.WebView.Maui { #if ANDROID - [SupportedOSPlatform("android23.0")] + [SupportedOSPlatform(BlazorWebView.AndroidSupportedOSPlatformVersion)] +#elif IOS + [SupportedOSPlatform(BlazorWebView.iOSSupportedOSPlatformVersion)] #endif public partial class BlazorWebViewHandler { diff --git a/src/BlazorWebView/src/SharedSource/BlazorWebViewServiceCollectionExtensions.cs b/src/BlazorWebView/src/SharedSource/BlazorWebViewServiceCollectionExtensions.cs index b7b0c748177d..bd9b717e413f 100644 --- a/src/BlazorWebView/src/SharedSource/BlazorWebViewServiceCollectionExtensions.cs +++ b/src/BlazorWebView/src/SharedSource/BlazorWebViewServiceCollectionExtensions.cs @@ -30,9 +30,9 @@ public static IWindowsFormsBlazorWebViewBuilder AddWindowsFormsBlazorWebView(thi public static IWpfBlazorWebViewBuilder AddWpfBlazorWebView(this IServiceCollection services) #elif WEBVIEW2_MAUI #if ANDROID - [System.Runtime.Versioning.SupportedOSPlatform("android23.0")] + [System.Runtime.Versioning.SupportedOSPlatform(BlazorWebView.AndroidSupportedOSPlatformVersion)] #elif IOS - [System.Runtime.Versioning.SupportedOSPlatform("ios11.0")] + [System.Runtime.Versioning.SupportedOSPlatform(BlazorWebView.iOSSupportedOSPlatformVersion)] #endif public static IMauiBlazorWebViewBuilder AddMauiBlazorWebView(this IServiceCollection services) #else From 186ccdd7caca74fcffe24ed6f373261c83170ff7 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Thu, 3 Oct 2024 12:28:33 -0500 Subject: [PATCH 2/3] Feedback from Teams --- src/BlazorWebView/src/Maui/BlazorWebView.cs | 6 ++++-- .../Microsoft.AspNetCore.Components.WebView.Maui.csproj | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/BlazorWebView/src/Maui/BlazorWebView.cs b/src/BlazorWebView/src/Maui/BlazorWebView.cs index db497f507ff9..90d3ae991055 100644 --- a/src/BlazorWebView/src/Maui/BlazorWebView.cs +++ b/src/BlazorWebView/src/Maui/BlazorWebView.cs @@ -18,11 +18,13 @@ namespace Microsoft.AspNetCore.Components.WebView.Maui #endif public partial class BlazorWebView : View, IBlazorWebView { - // NOTE: keep these in sync with: + // NOTE: keep these in *reasonably* in sync with: + // * src\BlazorWebView\src\Maui\Microsoft.AspNetCore.Components.WebView.Maui.csproj // * src\Templates\src\templates\maui-blazor\MauiApp.1.csproj // * src\Templates\src\templates\maui-blazor-solution\MauiApp.1\MauiApp.1.csproj + // * https://learn.microsoft.com/dotnet/maui/supported-platforms internal const string AndroidSupportedOSPlatformVersion = "android24.0"; - internal const string iOSSupportedOSPlatformVersion = "ios15.0"; + internal const string iOSSupportedOSPlatformVersion = "ios14.0"; internal static string AppHostAddress { get; } = HostAddressHelper.GetAppHostAddress(); diff --git a/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj b/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj index d4268f64fa8f..4d1fb438b049 100644 --- a/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj +++ b/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj @@ -23,6 +23,9 @@ $(DefaultPackageTags);blazor;webview;aspnet $(MauiRootDirectory)Assets\aspnet-icon.png Build .NET Multi-platform App UI (.NET MAUI) apps with Blazor web UI in the BlazorWebView control. + + 14.0 + 24.0 From 86b3eb2956c179c8ec177226aace31934a0d6ef4 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Mon, 9 Mar 2026 16:35:52 -0500 Subject: [PATCH 3/3] Address code review: add MacCatalyst support, update iOS to 15.0, centralize constants - Add MacCatalystSupportedOSPlatformVersion constant (maccatalyst15.0) - Update iOSSupportedOSPlatformVersion from ios14.0 to ios15.0 to match templates - Add #elif MACCATALYST blocks in BlazorWebView, BlazorWebViewHandler, and BlazorWebViewServiceCollectionExtensions - Add maccatalyst SupportedOSPlatformVersion to csproj - Centralize remaining hardcoded SupportedOSPlatform attributes on CreateFileProvider and TryDispatchAsync to use shared constants Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/BlazorWebView/src/Maui/BlazorWebView.cs | 17 +++++++++++++---- .../src/Maui/BlazorWebViewHandler.cs | 2 ++ ...ft.AspNetCore.Components.WebView.Maui.csproj | 3 ++- .../BlazorWebViewServiceCollectionExtensions.cs | 2 ++ 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/BlazorWebView/src/Maui/BlazorWebView.cs b/src/BlazorWebView/src/Maui/BlazorWebView.cs index 90d3ae991055..d54ee207cf77 100644 --- a/src/BlazorWebView/src/Maui/BlazorWebView.cs +++ b/src/BlazorWebView/src/Maui/BlazorWebView.cs @@ -15,6 +15,8 @@ namespace Microsoft.AspNetCore.Components.WebView.Maui [SupportedOSPlatform(AndroidSupportedOSPlatformVersion)] #elif IOS [SupportedOSPlatform(iOSSupportedOSPlatformVersion)] +#elif MACCATALYST + [SupportedOSPlatform(MacCatalystSupportedOSPlatformVersion)] #endif public partial class BlazorWebView : View, IBlazorWebView { @@ -24,7 +26,8 @@ public partial class BlazorWebView : View, IBlazorWebView // * src\Templates\src\templates\maui-blazor-solution\MauiApp.1\MauiApp.1.csproj // * https://learn.microsoft.com/dotnet/maui/supported-platforms internal const string AndroidSupportedOSPlatformVersion = "android24.0"; - internal const string iOSSupportedOSPlatformVersion = "ios14.0"; + internal const string iOSSupportedOSPlatformVersion = "ios15.0"; + internal const string MacCatalystSupportedOSPlatformVersion = "maccatalyst15.0"; internal static string AppHostAddress { get; } = HostAddressHelper.GetAppHostAddress(); @@ -94,9 +97,11 @@ public string StartPath /// #if ANDROID - [System.Runtime.Versioning.SupportedOSPlatform("android23.0")] + [System.Runtime.Versioning.SupportedOSPlatform(AndroidSupportedOSPlatformVersion)] #elif IOS - [System.Runtime.Versioning.SupportedOSPlatform("ios11.0")] + [System.Runtime.Versioning.SupportedOSPlatform(iOSSupportedOSPlatformVersion)] +#elif MACCATALYST + [System.Runtime.Versioning.SupportedOSPlatform(MacCatalystSupportedOSPlatformVersion)] #endif public virtual IFileProvider CreateFileProvider(string contentRootDir) { @@ -111,7 +116,11 @@ public virtual IFileProvider CreateFileProvider(string contentRootDir) /// Returns a representing true if the was called, or false if it was not called because Blazor is not currently running. /// Thrown if is null. #if ANDROID - [System.Runtime.Versioning.SupportedOSPlatform("android23.0")] + [System.Runtime.Versioning.SupportedOSPlatform(AndroidSupportedOSPlatformVersion)] +#elif IOS + [System.Runtime.Versioning.SupportedOSPlatform(iOSSupportedOSPlatformVersion)] +#elif MACCATALYST + [System.Runtime.Versioning.SupportedOSPlatform(MacCatalystSupportedOSPlatformVersion)] #endif public virtual async Task TryDispatchAsync(Action workItem) { diff --git a/src/BlazorWebView/src/Maui/BlazorWebViewHandler.cs b/src/BlazorWebView/src/Maui/BlazorWebViewHandler.cs index 4281572fb116..df638d6d7cd1 100644 --- a/src/BlazorWebView/src/Maui/BlazorWebViewHandler.cs +++ b/src/BlazorWebView/src/Maui/BlazorWebViewHandler.cs @@ -12,6 +12,8 @@ namespace Microsoft.AspNetCore.Components.WebView.Maui [SupportedOSPlatform(BlazorWebView.AndroidSupportedOSPlatformVersion)] #elif IOS [SupportedOSPlatform(BlazorWebView.iOSSupportedOSPlatformVersion)] +#elif MACCATALYST + [SupportedOSPlatform(BlazorWebView.MacCatalystSupportedOSPlatformVersion)] #endif public partial class BlazorWebViewHandler { diff --git a/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj b/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj index 4d1fb438b049..115ba0586b46 100644 --- a/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj +++ b/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj @@ -24,7 +24,8 @@ $(MauiRootDirectory)Assets\aspnet-icon.png Build .NET Multi-platform App UI (.NET MAUI) apps with Blazor web UI in the BlazorWebView control. - 14.0 + 15.0 + 15.0 24.0 diff --git a/src/BlazorWebView/src/SharedSource/BlazorWebViewServiceCollectionExtensions.cs b/src/BlazorWebView/src/SharedSource/BlazorWebViewServiceCollectionExtensions.cs index bd9b717e413f..a83a5e187c3c 100644 --- a/src/BlazorWebView/src/SharedSource/BlazorWebViewServiceCollectionExtensions.cs +++ b/src/BlazorWebView/src/SharedSource/BlazorWebViewServiceCollectionExtensions.cs @@ -33,6 +33,8 @@ public static IWpfBlazorWebViewBuilder AddWpfBlazorWebView(this IServiceCollecti [System.Runtime.Versioning.SupportedOSPlatform(BlazorWebView.AndroidSupportedOSPlatformVersion)] #elif IOS [System.Runtime.Versioning.SupportedOSPlatform(BlazorWebView.iOSSupportedOSPlatformVersion)] +#elif MACCATALYST + [System.Runtime.Versioning.SupportedOSPlatform(BlazorWebView.MacCatalystSupportedOSPlatformVersion)] #endif public static IMauiBlazorWebViewBuilder AddMauiBlazorWebView(this IServiceCollection services) #else