Как получить значения файла ресурсов в Visual Basic? - PullRequest
7 голосов
/ 12 апреля 2011

Я новичок в Visual Basic, и у меня возникают проблемы с доступом к файлу ресурса для моего проекта.

Dim rm As Resources.ResourceManager = New Resources.ResourceManager("MyProjectName.My.Resources.Resources", [Assembly].GetExecutingAssembly())
Dim myValue = rm.GetString(lookUpKey) 'boom Object reference not set to an instance of an object.

Я думаю, что проблема связана со строкой "MyProjectName.My.Resources.Resources".

Было бы лучше переместить строки в их собственный файл ресурсов?

Ответы [ 6 ]

8 голосов
/ 12 апреля 2011

Я думал, что это было что-то похожее на:

my.Resource.whateverhere

Разве это не тот ресурс, который вы ищете?

1 голос
/ 13 апреля 2011

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

Код для доступа к файлу ресурса фактически находится в сгенерированном файле Resource.resx.vb.

Мне удалось получить доступ к файлу ресурса, используя следующий код.

'Name of Class Library where I moved the resx file
Dim classLibraryName As String = "ResourceProj"
'Name of Resource File without the .resx suffix
Dim resourceFileName As String = "Mappings"
'Finding the assembly of the resx file, ResourceProjClass is a dummy class I created so that the dll would build.
Dim myAssembly As Assembly = GetType(ResourceProj.ResourceProjClass).Assembly

Dim rm As Resources.ResourceManager = Nothing
rm = New Resources.ResourceManager(classLibraryName & "." & resourceFileName, GetType(myAssembly)
Return rm.GetString(lookUpKey)
1 голос
/ 12 апреля 2011

Попробуйте ResourceManager("MyProjectName.Resources", ...), в противном случае, если это ресурсы приложения, вы можете просто использовать My.Resources.HD (см. Здесь: My.Resources Object )

или

Открыть Отражатель , загрузить туда свою сборку, перейти к ресурсам, появится список ресурсов, найти тот, который связывается с 'HD', скопировать имя (это похоже на MyProjectName.Resources.resources ), удалите последний .resources и попробуйте с этим.

1 голос
/ 12 апреля 2011

См. Статью MSDN Извлечение ресурсов с помощью класса ResourceManager для обозначения соглашений об именах:

Dim myManager As New _
   System.Resources.ResourceManager("ResourceNamespace.myResources", _
   myAssembly)
0 голосов
/ 13 октября 2017

Просто:

Dim loginMessage As String = Global.Resources.NameOfYourResxFile.NameOFVariable

0 голосов
/ 03 ноября 2011

Попробуйте

 Global.<MyNamespace>.My.Resources.<ResourceStringName>

для доступа к строкам ресурсов

...