首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在另一个程序集中迭代字符串资源

在另一个程序集中迭代字符串资源
EN

Stack Overflow用户
提问于 2014-11-11 09:03:01
回答 1查看 824关注 0票数 1

我想迭代给定.NET程序集中的所有字符串资源。为此,我提出了以下代码:

代码语言:javascript
复制
public void IterateResourcesInAssembly(string filename)
{
  var assembly = Assembly.LoadFile(filename);
  string[] resourceNames = assembly.GetManifestResourceNames();

  foreach (var resourceName in resourceNames)
  {
    var resourceManager = new ResourceManager(resourceName, assembly);
    var resourceSet = resourceManager.GetResourceSet(CultureInfo.CurrentCulture, true, true);
    // Exception is thrown!
  }
}

这里的问题是,GetResourceSet总是抛出异常:

对于给定的文化或中立的文化,缺少ManifestResourceException,无法找到资源.

但我很确定那不是真的。该程序集包含大量英文和德文资源。当使用.NET-Reflector打开程序集时,我也可以看到这些资源。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-11 10:14:58

GetManifestResourceNames()方法返回扩展名。在创建资源管理器实例之前,必须从资源名称中删除扩展,并只传递资源基名称。

代码语言:javascript
复制
public void IterateResourcesInAssembly(string filename)
        {
            var assembly = Assembly.LoadFile(filename);
            string[] resourceNames = assembly.GetManifestResourceNames();

            foreach (var resourceName in resourceNames)
            {
                string baseName = Path.GetFileNameWithoutExtension(resourceName);
                ResourceManager resourceManager = new ResourceManager(baseName, assembly);

                var resourceSet = resourceManager.GetResourceSet(CultureInfo.InvariantCulture, true, true);
                // Exception is thrown!
            }
        }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26861078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档