【发布时间】:2014-11-11 09:03:01
【问题描述】:
我想遍历给定 .NET 程序集中的所有字符串资源。 为此,我想出了以下代码:
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 打开程序集时,我也可以看到这些资源。
【问题讨论】:
-
您是否尝试过使用InternalGetResourceSet方法。我隐约记得使用那种方法来做同样的事情。看。 msdn.microsoft.com/en-us/library/…。您也可以尝试先调用 GetNeutralResourcesLanguage 来获取您需要传入的 CultureInfo。
标签: c# .net .net-assembly embedded-resource