Чтение файла .resx VB.NET SharpDevelop?

Есть ли способ получить прямой доступ к строке в .resx?

У меня есть несколько разных проектов, и .resx был создан с использованием шаблона SharpDevelop «Разное >> Пустой файл ресурсов».

Я пробовал большинство методов онлайн, например:

... = new ResourceManager ("ProjectEtc.resxFileName", 
           Assembly.GetExecutingAssembly)

но я получаю ту же ошибку:

Could not find any resources appropriate for the specified culture or 
neutral culture. Make sure "ProjectEtc.resxFileName.resources" was 
correctly embedded or linked into assembly "Project calling" at compile time...

независимо от того, что я делаю.

Похоже, мне нужно преобразовать мой .resx тоже в .resource файл, чего я бы не стал делать.

Я упускаю некоторые шаги при использовании шаблона #develop?

Подождите ... это лучший способ хранить постоянные строки в .NET?

Спасибо, датчанин


person Danedo    schedule 06.02.2012    source источник


Ответы (1)


Убедитесь, что для файла .resx для действия сборки задано значение EmbeddedResource. SharpDevelop должен делать это по умолчанию, когда вы создаете новый файл с использованием шаблона пустого файла ресурсов, но это стоит проверить.

Теперь вам нужно передать корневое пространство имен вашего проекта и имя файла resx без расширения файла в конструктор ResourceManager.

Итак, если вы создадите в SharpDevelop новый проект под названием TestResource, моим корневым пространством имен будет TestResource. Затем, если вы добавите в проект файл ресурсов с именем Foo.resx. Затем добавьте строку с именем «MyString», после чего вы сможете получить доступ к соответствующему строковому значению с помощью следующего кода:

Dim resourceManager As New ResourceManager("TestResource.Foo", Assembly.GetExecutingAssembly)
Dim result = resourceManager.GetString("MyString")

При компиляции приложения файл .resx будет скомпилирован в файл .resources и встроен в ваш проект. Если вы используете такой инструмент, как ILSpy, вы можете увидеть этот встроенный ресурс и его название.

Использование файлов .resx обычно является способом создания многоязычных приложений в .NET, поэтому их можно использовать для хранения строк.

person Matt Ward    schedule 07.02.2012
comment
Используя ILSpy, я действительно вижу файл ресурсов. Он находится в моем проекте в папке с именем Resources и действительно имеет имя [Project namespace] .Name.resources. Я снова попытался сослаться на него с помощью всевозможных «имен путей» от простейших до запутанных, однако получаю то же старое сообщение: не удалось найти ресурсы, подходящие для указанной культуры или нейтральной культуры. Все встроено. Я чешу затылок. - person Danedo; 08.02.2012
comment
Наличие файла .resx в папке в вашем проекте, похоже, не влияет на имя файла ресурсов, когда он встроен. - person Matt Ward; 08.02.2012