Вопрос:

ResourceManager пытается загрузить .resources, а не .resx файл

.net resourcemanager

24975 просмотра

5 ответа

1013 Репутация автора

Я пытаюсь загрузить файл 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» был правильно встроен или связан со сборкой «Project» во время компиляции, или что все требуемые спутниковые сборки загружаются и полностью подписаны.

Обратите внимание на .resources ... есть идеи о том, что здесь происходит?

Автор: Adam Fox Источник Размещён: 22.09.2009 03:59

Ответы (5)


0 плюса

10194 Репутация автора

Добавьте расширение .resx явно.

Вы также можете использовать автоматически сгенерированный класс и использовать его свойства, если это подходит для вашего проекта.

Автор: Jon Seigel Размещён: 22.09.2009 04:02

3 плюса

3762 Репутация автора

Решение

Я думаю, что вы используете ResourceManager неправильно. Смотрите этот пост .

Также обратите внимание, что когда вы открываете командную строку Visual Studio и запускаете resgen.exe, он говорит, что он используется для преобразования файлов ресурсов из одного формата в другой (т. Е. Resx в ресурсы). Я думаю, вам нужно будет преобразовать ваш файл в ресурсы из resx, а затем загрузить его с помощью resourceManager.

Автор: Ganesh R. Размещён: 22.09.2009 04:34

3 плюса

0 Репутация автора

Я не уверен, какую версию .NET Framework вы используете.

Попробуйте изменить способ оживления ResourceManager.

ResourceManager rm = 
     new ResourceManager("Project.Resource", 
                         System.Reflection.Assembly.Load("App_LocalResources"));

Он должен работать.

Это также отображается как статическое свойство автоматически сгенерированного класса .designer.cs конкретного менеджера ресурсов.

Автор: ChiTec Размещён: 12.10.2009 01:42

14 плюса

871 Репутация автора

Для загрузки .resx в ResourceManager необходимо указать пространство имен

var rm = new ResourceManager("Namespace.ResxName", Assembly.GetAssembly());

или вы можете получить ResourceManager бесплатно, если для модификатора доступа в редакторе управляемых ресурсов установлено значение Internal или Public, после этого VS сгенерирует ResxName.Designer.cs.

var rm = ResxName.ResourceManager;
Автор: diimdeep Размещён: 23.10.2012 01:02

4 плюса

6031 Репутация автора

Есть удивительно простой способ чтения ресурса по строке:

ResourceNamespace.ResxFileName.ResourceManager.GetString("ResourceKey")

Это чистое и элегантное решение для чтения ресурсов по ключам, где нельзя использовать «точечную нотацию» (например, когда ключ ресурса сохраняется в базе данных).

Автор: Landeeyo Размещён: 22.04.2015 08:43
Вопросы из категории :
32x32