如何在Visual Basic中获取资源文件值?

时间:2011-04-12 17:59:26

标签: vb.net winforms embedded-resource

我是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”。

将字符串移动到自己的资源文件中会更好吗?

7 个答案:

答案 0 :(得分:8)

我认为它类似于:

my.Resource.whateverhere

这不是您要寻找的那种资源吗?

答案 1 :(得分:1)

有关命名约定,请参阅MSDN文章 Retrieving Resources with the ResourceManager Class

Dim myManager As New _
   System.Resources.ResourceManager("ResourceNamespace.myResources", _
   myAssembly)

答案 2 :(得分:1)

尝试ResourceManager("MyProjectName.Resources", ...),否则如果是应用资源,您只需使用My.Resources.HD(请参阅此处:My.Resources Object

打开 Reflector ,在那里加载程序集,转到资源,显示资源列表,搜索包含'HD'的资源,复制名称(就像 MyProjectName。 Resources.resources ),删除最后一个.resources并尝试使用它。

答案 3 :(得分:1)

在将.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)

答案 4 :(得分:1)

如果您加载一个外部.resx文件并希望将其显示在智能感知My.Resources下,那么您需要做两件事。

首先,文件应位于项目的根目录中。只需右键单击该项目并执行“添加现有项”,然后将其命名为.resx文件。您应该注意到,没有像燕尾形那样可以像内置资源文件一样扩展resx文件。

最后一步是突出显示您的resx文件并转到属性窗口。在自定义工具下放置“ ResXFileCodeGenerator”,在自定义工具命名空间下放置“ My.Resources”。现在,您应该能够以编程方式访问My.Resources。[resx文件的名称] .resource_item下的资源。

答案 5 :(得分:0)

尝试

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

访问资源字符串

答案 6 :(得分:0)

简单地:

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