2009-09-22 4 views
11

Я пытаюсь загрузить файл Resx в моем веб-сайте .net с помощью:ResourceManager пытается загрузить .resources не .resx файл

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 ... какие-либо идеи о том, что здесь происходит?

+0

Не создан также файл дизайнера? –

ответ

3

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

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

+1

Спасибо, что поставили меня на правильный путь ... Я не должен использовать ResourceManager В итоге я использовал синтаксис <% $ Resources: filename, key%> на моей странице –

1

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

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

+0

Если я добавлю .resx к «Project.Resource», я получаю ту же ошибку, но для файла Project.Resource.resx.resources –

+0

К сожалению, я пропустил, что ваш .resx находится в App_LocalResources. Ни один из моих сообщений не применяется ... –

3

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

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

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

Должно работать.

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

13

Чтобы загрузить .resx в ResourceManager вам необходимо указать Namespace

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

или вы можете получить ResourceManager бесплатно, если установлен модификатор доступа внутри Управляемый редактор ресурсов для внутреннего или общественности, после того, что VS будет генерировать ResxName.Designer.CS

var rm = ResxName.ResourceManager; 
+1

+ 1 для метода доступа к ресурсам через код конструктора – Boggin

4

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

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

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

Смежные вопросы