You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor WASM发布后懒加载RCL资源附属程序集未加载问题

问题原因

这是.NET 6 Blazor WASM懒加载场景下的典型问题,核心诱因有两个:

  • 默认发布流程只会自动把主项目直接引用的附属资源程序集写进blazor.boot.json的加载清单,配置为懒加载的Razor类库的附属资源DLL,不会被自动识别加入懒加载列表
  • 你使用的6.0.300版本.NET SDK默认开启了附属资源裁剪逻辑,没被显式加入加载清单的资源DLL会在发布阶段直接被剔除,最终导致发布后对应文化的资源程序集缺失,资源访问失败
解决方案

按以下步骤配置即可修复:

1. 修正Razor类库(项目B)的发布配置

打开项目B的.csproj文件,在<PropertyGroup>节点下添加以下配置,避免资源被误裁剪、强制输出所有文化的附属程序集:

<PropertyGroup>
  <!-- 关闭附属资源自动裁剪,防止非默认文化的资源DLL被删除 -->
  <BlazorWebAssemblyEnableSatelliteResourceCulling>false</BlazorWebAssemblyEnableSatelliteResourceCulling>
  <!-- 配置需要输出的资源语言,填all代表输出所有存在的语言资源 -->
  <SatelliteResourceLanguages>all</SatelliteResourceLanguages>
</PropertyGroup>

2. 给主项目(项目A)添加发布后补全懒加载清单的编译目标

打开项目A的.csproj文件,在文件末尾的</Project>标签前添加以下MSBuild Target,自动将懒加载类库的附属资源DLL加入懒加载清单,该配置会自动扫描项目B所有文化对应的附属DLL,不需要手动逐个添加文化路径:

<Target Name="AppendLazySatelliteAssemblies" AfterTargets="BlazorPublishAssets">
  <ItemGroup>
    <!-- 匹配项目B对应的所有文化附属资源DLL -->
    <BProjectSatellites Include="@(ResolvedAssembliesToPublish)" 
                         Condition="%(FileName) == 'ProjectB.resources' And %(Extension) == '.dll'" />
  </ItemGroup>
  <ItemGroup>
    <!-- 将匹配到的资源DLL加入Blazor懒加载程序集列表 -->
    <_BlazorLazyLoadedAssembly Include="@(BProjectSatellites)" />
  </ItemGroup>
</Target>

3. 适配运行时加载逻辑

在项目A配置懒加载程序集加载的代码段中,补充加载对应文化资源的逻辑:在调用LazyAssemblyLoader.LoadAssembliesAsync加载项目B主DLL时,同步加载当前线程UI文化对应的资源DLL,示例代码:

// 例如在路由跳转前触发懒加载的逻辑中
var assembliesToLoad = new List<string> { "ProjectB.dll" };
var currentCulture = CultureInfo.CurrentUICulture.Name;
// 追加对应文化的附属资源DLL路径
assembliesToLoad.Add($"{currentCulture}/ProjectB.resources.dll");
await lazyAssemblyLoader.LoadAssembliesAsync(assembliesToLoad);

4. 版本兼容处理

如果完成以上配置后发布仍存在问题,将本地.NET 6 SDK升级到6.0.4xx及以上的稳定补丁版本即可,6.0.300版本存在懒加载场景下附属程序集清单生成的已知bug,后续补丁版本已经修复。

验证方式

重新发布项目后,检查两个位置确认配置生效:

  • 发布目录wwwroot/_framework下对应文化的子目录(比如el-GR)中存在ProjectB.resources.dll文件
  • 打开blazor.boot.json,在lazyLoadedAssemblies数组中可以看到对应文化资源DLL的路径条目

内容的提问来源于stack exchange,提问作者Yiannr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:09:29