Blazor WebAssembly 支持懒加载(Lazy Loading)程序集,能显著减少首屏加载体积,提升启动速度。关键在于正确配置
LinkerConfig.xml、启用懒加载开关,并在
Program.cs中注册按需加载的程序集。
启用懒加载开关
在项目文件(
.csproj)中添加以下属性,开启 WebAssembly 懒加载支持:
<blazorwebassemblylazyload>YourAssembly.dll</blazorwebassemblylazyload>—— 声明需要懒加载的程序集(可多行)
<publishtrimmed>true</publishtrimmed>—— 推荐同时启用裁剪(与懒加载兼容) 确保使用 .NET 6 或更高版本(懒加载自 .NET 6 正式支持)
配置 Linker(可选但推荐)
为避免链接器误删懒加载所需的类型,需在
LinkerConfig.xml中保留相关入口点: 在项目根目录创建
LinkerConfig.xml添加如下内容,防止懒加载程序集中的类型被裁剪:
在 Program.cs 中注册懒加载程序集
调用
WebAssemblyHostBuilder.Services.AddLazyAssemblyLoading()启用运行时懒加载能力: 在
Program.cs的构建主机前添加该服务注册 确保所有懒加载程序集已通过
BlazorWebAssemblyLazyLoad声明,否则运行时会报错“Assembly not found” 实际加载由
AssemblyLoadContext.Default.LoadFromStreamAsync()或组件级
dynamic import触发(如路由组件或
Lazy<t></t>)
验证懒加载是否生效
发布后检查
wwwroot/_framework/目录: 目标程序集(如
YourAssembly.dll)应独立存在,不包含在
dotnet.wasm或主程序集中 浏览器开发者工具的 Network 面板中,该 DLL 应在首次访问对应功能时才发起请求 查看控制台是否有
Loaded assembly: YourAssembly.dll日志(需启用日志级别为
Debug)
基本上就这些。配置简单但细节容易出错,重点核对项目文件声明、Linker 设置和运行时注册三处是否一致。
