ResourceManager не подбирает правильный файл Resx
-
02-10-2019 - |
Вопрос
У меня есть проблема, получая правильные записи файла ресурсов и нуждается в некоторой помощи ... вот мой сценарий
У меня есть ряд проектов, которые являются частью большого решения для отчетности, которые следуют в этом формате
Плагин. **** отчет
- Ссылка (папка)
- Dataaccesslayer (папка)
- Набор данных (папка)
- Datawrappers (папка)
Локализация (папка)
* .cs.cs.
Где * это имя отчета, я собираюсь генерировать
У * .cs есть экспортное утверждение, чтобы я мог выбрать его, используя MEF (не уверен, если это актуально, но думал, что стоит упомянуть). Пространство имен в * .cs - Companyname.datashaper.plugin. * Отчет. Благодаря названию проекта и местоположению файлов я изменил пространство имен по умолчанию для каждого проекта, чтобы быть CompanyName.datashaper.plugin. * Отчет (это был просто плагин. * Отчет до моего изменения).
Теперь для проблемы .. Внутри * .cs Я создал ResourceManager. Это выглядит так ...
_resourceManager =
new ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report",
Assembly.GetExecutingAssembly());
Внутри мой файл Designer Resx у меня есть следующие ...
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report", typeof(*Report).Assembly);
resourceMan = temp;
}
return resourceMan;
}
Мой звонок на диспетчер ресурсов выглядит так ...
string resourceString = _resourceManager.GetString(resourceKey, _currrentCultureInfo);
где _CurrentCultureInfo является правильным объектом CultureInfo.
У меня есть 4 различных файла RESX в моей папке локализации для каждого проекта, (**** Report.resx, **** Report.fr-ca.resx, **** Report.en-gb.resx, *** * Report.de-de.resx).
Когда я делаю призыв к диспетчеру ресурсов, я всегда получаю запись от .Resx ... Никогда ни один из других языковых файлов, независимо от объекта CultureInfo, я передаю в звонок. Что я испортил?
-> Быстрое обновление до моего оригинального вопроса, но это, кажется, это связано с MEF. Я создал свой класс старомодный путь (новый * отчет ()) и сделал вызов локализации, и он работает нормально
Решение
Хорошо, я выяснил это .. Я получаю файл .Resx, потому что он действительно встроен в главную сборку. Другие файлы встроены в отдельные DLL для каждого языка, мне тогда необходимо скопировать их в одну и ту же папку, которую я создаю свой совокупный контейнер, мой диспетчер ресурсов, затем видит все языки.