.NET MAUI Blazor共享页面无法在MAUI应用加载的问题求助
解决MAUI Blazor加载共享Razor类库页面的问题
关键配置步骤
MAUI Blazor注册共享程序集的逻辑和Blazor Server不同,需在MauiProgram.cs中配置RazorComponentsOptions来添加额外程序集:
- 引入必要命名空间:
using Microsoft.AspNetCore.Components.Web;
- 在
CreateMauiApp方法内,修改AddRazorComponents的配置,添加共享类库的程序集:
builder.Services.AddRazorComponents() .AddInteractiveServerComponents() .AddAdditionalAssemblies(typeof(SharedGui._Imports).Assembly);
这里通过
typeof(SharedGui._Imports).Assembly获取共享类库的程序集,也可以替换为共享类库中任意页面或组件的类型,比如typeof(SharedGui.Pages.ProductList).Assembly
- 确认NativeApp项目已正确引用SharedGui类库:
- 右键NativeApp项目 → 选择「项目引用」 → 勾选SharedGui
额外排查点
- 检查SharedGui中页面的
@page路由属性是否正确,比如@page "/products"这类路由没有拼写错误 - 验证NativeApp的
App.razor中Router组件是否正确配置额外程序集:
<Router AppAssembly="@typeof(App).Assembly" AdditionalAssemblies="@(_additionalAssemblies)"> <Found Context="routeData"> <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" /> </Found> <NotFound> <LayoutView Layout="@typeof(MainLayout)"> <p>Sorry, there's nothing at this address.</p> </LayoutView> </NotFound> </Router> @code { private IEnumerable<Assembly> _additionalAssemblies = new[] { typeof(SharedGui._Imports).Assembly }; }
这种在
App.razor中直接指定AdditionalAssemblies的方式,和MauiProgram中的配置二选一即可,也可同时配置
验证操作
配置完成后,清理解决方案,重新生成NativeApp项目,运行MAUI应用测试共享页面是否正常加载。
内容的提问来源于stack exchange,提问作者doronazu
相关产品推荐
相关产品推荐

