有没有办法直接访问.resx中的字符串?
我有几个不同的项目,.resx是使用SharpDevelop模板“Misc>>空资源文件”创建的。
我在线尝试了大多数方法,例如:
... = 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中存储常量字符串的最好方法吗?
谢谢, 戴恩
答案 0 :(得分:0)
检查.resx文件的构建操作是否设置为 EmbeddedResource 。在使用Empty资源文件模板创建新文件时,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中使用多语言应用程序的方式,因此使用它们存储字符串是可以的。