Blazor WebAssembly не может загружать файлы ресурсов из библиотеки классов - PullRequest
1 голос
/ 03 августа 2020

Сейчас я работаю над Blazor WebAssembly Asp. NET, размещенным в. NET Standard 2.1.

Я пытаюсь загружать файлы ресурсов из отдельного. NET Standard 2.1. C# Библиотека классов.

К сожалению, я всегда получаю следующую ошибку:

"Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer [100] Отрисовка необработанного исключения компонент: не удалось загрузить тип поля MyNamespace.Footer: k__BackingField (0) из-за: Не удалось загрузить файл или сборку MyNamespace.Resources, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null или один из его dependencies. "

  1. Мои RESX-файлы имеют значение Модификатор доступа: Publi c и выглядят так на вкладке свойств:

enter image description here

My project structure looks like this:

  • MyNamespace.BlazorApp.Client
  • MyNamespace.BlazorApp.Server
  • MyNamespace.BlazorApp.Resources

I load the resources like this:

  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
MyNamespace.BlazorApp.Server

Здесь я просто загружаю ссылку на проект в свой проект ресурсов. Я не использую .resx в этом проекте.

Знаете ли вы, как загружать ресурсы из внешнего источника? NET Стандарт 2.1. C# Библиотека классов в проекте Blazor Wasm?

1 Ответ

1 голос
/ 03 августа 2020

Ошибка происходит от имени cla sh, проект можно скомпилировать, но нельзя загрузить. Я знаю способ заставить его работать, я не уверен, что это единственный или лучший способ.

  1. Переименуйте свой проект resx в MyNamespace.BlazorApp.Translations
  2. Убедитесь, что есть a publi c class Translation в root (no 's')
  3. Создайте папку с именем Resources в проекте Translations
  4. Добавьте Translation.resx, Translation.es. resx et c в эту папку
  5. Измените конфигурацию на builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");

Ресурсы - это имя по умолчанию в нескольких местах, не рекомендуется называть свой собственный проект таким же . Кажется, требуется ResourcesPath, я не знаю, какие значения по умолчанию.

...