2012-02-06 80 views
0

有没有办法直接访问.resx中的字符串?读取.resx文件VB.NET SharpDevelop?

我有几个不同的项目,并且.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

检查.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中执行多语言应用程序的方式,因此使用它们来存储字符串是可以的。

+0

使用ILSpy我确实看到了资源文件。它位于我的Project内的一个名为Resources的文件夹中,实际上名称为“[Project namespace] .Name.resources”。我再次试图用最简单的“路径名称”来引用它,但是我收到了同样的旧信息:“找不到适合指定文化或中性文化的任何资源。”一切都嵌入了。我在挠头。 – Danedo 2012-02-08 13:59:33

+0

将.resx文件放在项目的文件夹中时,似乎不会影响资源文件嵌入时的名称。 – 2012-02-08 19:32:55