我想迭代给定.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打开程序集时,我也可以看到这些资源。
发布于 2014-11-11 10:14:58
GetManifestResourceNames()方法返回扩展名。在创建资源管理器实例之前,必须从资源名称中删除扩展,并只传递资源基名称。
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!
}
}https://stackoverflow.com/questions/26861078
复制相似问题