MAUI Blazor Hybrid 是 .NET 中融合原生跨平台能力(MAUI)与 Web UI 开发体验(Blazor)的方案,支持用 C# 编写 Razor 组件并调用摄像头、蓝牙、NFC 等设备功能;需 Visual Studio 2022 v17.12+ 及对应工作负载,项目入口为 wwwroot/index.html,通过 MAUI Essentials 或平台服务注入实现原生能力调用,权限须在各平台配置文件中声明。

MAUI Blazor Hybrid 是 .NET 生态中把原生跨平台能力(MAUI)和 Web UI 开发体验(Blazor)结合起来的方案,适合想用 C# 写界面、又需要调用摄像头、蓝牙、NFC、本地数据库等设备功能的场景。它不是纯 Web 应用,也不是传统 MAUI XAML 应用,而是“Blazor 组件跑在 MAUI 容器里”,页面逻辑用 Razor + C#,底层由 MAUI 提供平台桥接。
环境准备和项目创建
必须安装 Visual Studio 2022 v17.12 或更高版本,并启用两个工作负载:
- .NET Multi-Platform App UI 开发
- ASP.NET 和 Web 开发
创建方式有两种:
- 在 Visual Studio 中:新建项目 → 筛选 “.NET MAUI Blazor Hybrid 应用” 模板 → 命名、选择框架(推荐 .NET 9 或 .NET 10)→ 创建
- 在 VS Code 中:安装 .NET MAUI 扩展 + .NET SDK + MAUI 工作负载 → 命令面板输入 “.NET: Create Project” → 选 “.NET MAUI Blazor Hybrid App”
项目生成后,结构类似普通 MAUI,但 wwwroot/index.html 是入口,Pages/ 下是 Razor 组件,Platforms/ 下可写平台专用代码。
运行和调试多平台目标
刚创建的项目默认支持 Windows、Android、iOS(需 Mac)、macOS。常用启动方式:
- Windows:工具栏选 “Windows Machine” → 自动拉起桌面窗口(需开启开发者模式)
- Android:选 “Android Emulator” → 首次会提示安装 Android SDK 和接受许可证
- iOS/macOS:需在 macOS 上用 VS for Mac 或 CLI 构建,Windows 上无法直接部署
注意:不同平台的权限(如相机、位置、蓝牙)需在对应 Platforms/xxx/Info.plist 或 AndroidManifest.xml 中声明,否则运行时会拒绝访问。
接入原生能力(比如摄像头、蓝牙)
MAUI Blazor Hybrid 的核心优势是能无缝调用原生 API。不是靠 JS 互操作硬桥接,而是通过 MAUI 的 Microsoft.Maui.Essentials 或平台服务注入:
- 摄像头:用
MediaPicker.CapturePhotoAsync()直接拍照,返回FileResult,再转成 base64 或保存到本地 - 蓝牙 BLE:引用
Plugin.BluetoothLE或使用 MAUI Community Toolkit 的BluetoothLE封装,从 Blazor 页面通过@inject获取服务实例调用 - 本地设置:用
Preferences.Set("key", value)存取轻量数据,比手写文件更安全可靠
如果官方组件不支持某功能(比如 NFC),可在 Platforms/Android/MainActivity.cs 中扩展 Java/Kotlin 代码,再通过 MAUI 的 DependencyService 或 MauiHandlers 暴露给 Blazor 层。
UI 库与样式定制
默认 UI 是基础 HTML + Bootstrap CSS。想提升体验,推荐集成 BootstrapBlazor:
- NuGet 引入:
BootstrapBlazor和BootstrapBlazor.FontAwesome(v7.*) - 在 wwwroot/index.html 的
中添加 CSS 引用: - Razor 页面中直接使用组件,如
点我
自定义主题只需改 wwwroot/css/app.css,或引入 Tailwind、Bulma 等现代 CSS 框架,Blazor 组件自动响应。
基本上就这些。起步不复杂,但容易忽略权限配置和平台初始化细节。只要环境搭好、模板跑通、第一个摄像头按钮点出来,后续加数据库、蓝牙、NFC 就是按模块叠加的事。










