我是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”。
将字符串移动到自己的资源文件中会更好吗?
答案 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