Blazor WebAssembly 无法从 class 库加载资源文件

Blazor WebAssembly cannot load resources files from class library

我目前正在开发 .NET Standard 2.1 中托管的 Blazor WebAssembly Asp.NET。

我尝试从单独的 .NET Standard 2.1 加载资源文件。 C# Class 库。

不幸的是,我总是收到以下错误:

"Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100] 未处理的异常呈现组件:无法加载字段类型 'MyNamespace.Footer:k__BackingField' (0),原因是:无法加载文件或程序集 'MyNamespace.Resources, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 或其依赖项之一。“

  1. 我的 .resx 文件设置为 访问修饰符:Public 并且在属性选项卡中看起来像这样:

我的项目结构是这样的:

我这样加载资源:

  1. MyNamespace.BlazorApp.Client:

在我的 Program.cs 主要方法中,我将当前文化设置如下:

CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US");
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-US");

我添加了本地化服务:

services.AddLocalization();

在我想使用文化设置的 .razor 页面上,我注入了本地化服务:

@inject IStringLocalizer<Translations> Translations
  1. MyNamespace.BlazorApp.Server

这里我只是将项目引用加载到我的资源项目中。我没有在这个项目中使用 .resx。

你知道如何从外部 .NET Standard 2.1 加载资源吗? C# Class 库到 Blazor Wasm 项目?

错误来自名称冲突,项目可以编译但无法加载。
我知道一种让它工作的方法,我不确定这是唯一还是最好的方法。

  1. 将您的 resx 项目重命名为 MyNamespace.BlazorApp.Translations
  2. 确保根目录中有 public class 翻译(没有 's')
  3. 在翻译项目中创建一个名为 Resources 的文件夹
  4. 将 Translation.resx、Translation.es.resx 等添加到该文件夹​​
  5. 将配置更改为 builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");

Resources 是多个地方的默认名称,将您自己的项目命名为相同名称不是一个好主意。 ResourcesPath 好像是必须的,我不知道默认值是多少。