2009-04-16 65 views
1

我有一个.resx文件,其中包含我的项目的一些字符串资源。在运行时,我想读取此文件中定义的所有资源并将它们存储在容器中。原因并不重要。在运行时枚举.NET嵌入式资源的内容

我读过关于ResourceReader类,它对二进制.resource文件进行操作。我的印象是,.resx在编译时被转换为二进制格式并嵌入到程序集中。这是真的,还是我需要用resgen手动生成它?如果我需要手动生成它,我如何将它添加到我的VS项目中,将它嵌入到程序集中,并在运行时访问它?

简而言之,如何在运行时使用ResourceReader访问.resx中定义的资源?

回答

3

您可以使用ResourceReader.GetEnumerator()来获得一个枚举器到您的资源。

如果您试图直接读取.resx文件,您可能需要考虑使用ResXResourceReader而不是ResourceReader。

如果您尝试从.resources(resx - > resources)编译的内容中读取,则需要适当修改名称。说你的名字,你.resx文件“MyRes.resx”,你需要使用:

var resManager = new ResourceManager("MyRes.resources"); 

如果RESX文件是在卫星组装,但是,它会增加项目的名称,即:("MyProject.MyRes.resources");

如果您使用的本地化,你需要的是,太:("MyProject.MyRes.en-GB.resources");

+0

是的,但首先我需要传递一个.resource文件的路径构建ResourceReader。我创建了一个.resx文件,但我不明白.resource文件的来源。 – Odrade 2009-04-16 19:32:41

+0

我想过用resgen生成一个并将其添加到我的项目中,但我认为二进制资源应该嵌入程序集中。我一定是误解了一些东西。 – Odrade 2009-04-16 19:34:41

+0

.resource文件在构建时由资源文件生成器生成:http://msdn.microsoft.com/en-us/library/ccec7sz1(VS.80).aspx – Lucero 2009-04-16 19:37:19