在运行时枚举.NET嵌入资源的内容

时间:2009-04-16 19:28:59

标签: .net resources

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

我已经阅读过ResourceReader类,它运行二进制.resource文件。我的印象是.resx在构建时转换为二进制格式并嵌入到程序集中。这是真的吗,还是我需要用resgen手动生成它?如果我确实需要手动生成它,如何将其添加到我的VS项目中,将其嵌入到程序集中,并在运行时访问它?

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

1 个答案:

答案 0 :(得分:4)

您可以使用ResourceReader.GetEnumerator()获取资源的枚举器。

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

如果您尝试从已编译的.resources(resx - >资源)中读取,则需要适当地修改名称。假设您将.resX文件命名为“MyRes.resx”,您将要使用:

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

如果resx文件在附属程序集中,它将添加项目名称,即:("MyProject.MyRes.resources");

如果您正在使用本地化,那么您也需要这样做:("MyProject.MyRes.en-GB.resources");