ResourceManager пытается загрузить .resources не .resx файл
Я пытаюсь загрузить файл resx на свой .net-сайт, используя:
ResourceManager rm = new ResourceManager( "Project.Resource", Assembly.GetExecutingAssembly() );
Файл Resource.resx находится в папке App_LocalResources и установлен для вставки в сборку при сборке.
Когда я пытаюсь получить доступ к файлу resx, используя:
rm.GetString( "key" );
или rm.GetString( "key", culture );
Появляется сообщение об ошибке:
Не удалось найти ресурсы подходящий для указанной культуры или нейтральной культурой. Убедиться "Project.Resource.resources" был правильно встраивается или сборка "Проект" во время компиляции или что все спутниковые сборки требуемые являются загружаемыми и полностью подписан.
Обратите внимание на .resources... любые идеи о том, что здесь происходит?
Ответы
Ответ 1
Я думаю, что использование ресурсов ResourceManager неверно.
Смотрите post.
Также обратите внимание, что когда вы открываете командную строку Visual Studio и запускаете файл resgen.exe, он говорит, что используется для преобразования файлов ресурсов из одного формата в другой (то есть resx к ресурсам).
Я думаю, вам нужно будет преобразовать ваш файл в ресурсы из resx, а затем загрузить его с помощью resourceManager.
Ответ 2
Чтобы загрузить .resx в ResourceManager, вам нужно указать пространство имен
var rm = new ResourceManager("Namespace.ResxName", Assembly.GetAssembly());
или вы можете бесплатно получить ResourceManager, если установить модификатор доступа внутри редактора управляемых ресурсов в Internal или Public, после чего VS будет генерировать ResxName.Designer.cs
var rm = ResxName.ResourceManager;
Ответ 3
Удивительно простой способ чтения ресурсов по строкам:
ResourceNamespace.ResxFileName.ResourceManager.GetString("ResourceKey")
Это чистое и элегантное решение для чтения ресурсов по клавишам, где нельзя использовать "точечную нотацию" (например, когда ключ ресурса сохраняется в базе данных).
Ответ 4
Я не уверен, какую версию .NET Framework вы используете.
Попробуйте указать способ возвращения ресурса ResourceManager.
ResourceManager rm =
new ResourceManager("Project.Resource",
System.Reflection.Assembly.Load("App_LocalResources"));
Он должен работать.
Это также отображается как статическое свойство автоматически сгенерированного класса .designer.cs конкретного менеджера ресорт.
Ответ 5
Добавить расширение .resx явно.
Вы также можете использовать автоматически сгенерированный класс и использовать его свойства, если это подходит для вашего проекта.