.NET MAUI Blazor 如何修改BlazorWebView的HostPage路径
MAUI BlazorWebView 加载非根目录独立Blazor站点配置方法
你遇到的0.0.0.0无法访问问题,本质原因是MAUI默认仅会将项目根目录下的wwwroot文件夹识别为静态资源打包目录,你放在独立子目录(后续要做Git子模块)里的Blazor站点静态资源,默认不会被打包进应用安装包,BlazorWebView自然找不到对应的HostPage文件。
按以下步骤配置即可正常加载:
- 第一步:配置MauiAsset打包规则
打开MAUI项目的.csproj项目文件,新增如下配置项,告诉MAUI把你独立子目录下的wwwroot资源按原有目录结构打包进应用资源:
注意<ItemGroup> <MauiAsset Include="ImagineItsASubModule\wwwroot\**" LogicalName="ImagineItsASubModule/wwwroot/%(RecursiveDir)%(Filename)%(Extension)" /> </ItemGroup>LogicalName必须保留完整的子目录前缀,不要把资源平铺到根路径,否则会和主项目wwwroot下的文件重名冲突。 - 第二步:核对BlazorWebView的HostPage路径
你之前XAML里写的HostPage路径格式是对的,只要保证路径大小写和实际目录完全匹配即可——安卓、iOS系统的文件系统是大小写敏感的,Windows本地调试不报错不代表移动端能正常运行,正确配置示例:<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:MauiApp1.ImagineItsASubModule" x:Class="MauiApp1.MainPage" BackgroundColor="{DynamicResource PageBackgroundColor}"> <BlazorWebView HostPage="ImagineItsASubModule/wwwroot/index.html"> <BlazorWebView.RootComponents> <RootComponent Selector="#app" ComponentType="{x:Type local:Main}" /> </BlazorWebView.RootComponents> </BlazorWebView> </ContentPage> - 第三步:修正子目录index.html内的资源引用
打开ImagineItsASubModule/wwwroot/index.html,检查里面的CSS、JS、Blazor框架文件引用,全部使用相对路径,不要以/开头写绝对路径。比如默认的Blazor脚本引用保持_framework/blazor.webview.js的写法即可,不要改成/_framework/blazor.webview.js,否则会强制去主项目根wwwroot下找资源,触发404。 - 第四步:清理缓存重新编译
先执行清理解决方案操作,手动删除项目下的bin、obj文件夹后再重新编译,避免旧的资源缓存导致加载异常。
后续接Git子模块的适配说明
等你把ImagineItsASubModule目录替换为Git子模块后,只需要把上面csproj配置里的目录名改成子模块的实际目录名即可,不需要调整其他逻辑,完全满足代码隔离的需求。
内容的提问来源于stack exchange,提问作者Boz
相关产品推荐
相关产品推荐

