用途:当 MAUI 应用需要承载 Razor 组件或内嵌 Web 界面时使用本技能,指导构建与调试 Blazor Hybrid。
主要能力:区分两种宿主——BlazorWebView 用于在 MAUI 内渲染 Razor 组件;HybridWebView 用于 HTML/JavaScript 内容与 .NET 交换消息,不走 Blazor 组件模型。涵盖在 MauiProgram.cs 注册 Blazor Hybrid 服务、将原生服务保留在 MAUI DI 中并通过 DI 供 Razor 使用、把静态 Web 资源放在 wwwroot 或引用的 Razor 类库中、通过文档化 API 做 JS/.NET 互操作。
使用方式:BlazorWebView 需注册 builder.Services.AddMauiBlazorWebView(); 并在 XAML 中配置 HostPage 与 RootComponents(根组件类型随模板不同,新模板常用 Routes,旧模板可能用 Main)。HybridWebView 原始消息需同时给出 SendRawMessage、RawMessageReceived、JSON DTO 契约,以及在裁剪/NativeAOT/Release 裁剪场景下使用源生成 JsonSerializerContext/System.Text.Json 路径,不能只用原始字符串或 DynamicDependency。静态资源用 _content/{PackageId}/... 引用 RCL 资源,避免仅单平台可用的文件路径,并确保 CSP、本地脚本与资源路径在打包应用源下可用。互操作方面,Razor 组件用 IJSRuntime,非 Blazor 内容用 HybridWebView 消息 API;组件释放时释放 DotNetObjectReference;认证/会话/数据服务保留在原生侧,不要在浏览器本地存储放长期密钥,分发前按预期 schema 校验 RawMessageReceived 载荷。
调试:启用 DevFlow 时用 maui devflow mcp 及 CDP 工具 maui_cdp_webviews、maui_cdp_source、maui_cdp_evaluate、maui_cdp_screenshot、maui_logs 检查 WebView DOM、控制台日志与路由状态;路由/DOM 陈旧问题需给出截图或日志证据。开发者工具仅在 Debug 构建启用(#if DEBUG 下 AddBlazorWebViewDeveloperTools()),Release 不得开启 WebView devtools 或 CDP。
限制:需注意反射、序列化与 JS 互操作载荷的裁剪和 NativeAOT 风险,优先源生成序列化,测试 Release 构建,并检查第三方互操作包的裁剪支持。具体平台与版本细节资料未提供。