Occasionally I need to get at the names of the resources in an assembly, usually this coincides with me trying to use a resource which either doesn’t exist of I otherwise make a typo on its name.
This little snippet simply allows us to iterate of the resources in an assembly and returns an array of the key names
public static string[] GetResourceNames(Assembly assembly)
{
string resName = assembly.GetName().Name + ".g.resources";
using (var stream = assembly.GetManifestResourceStream(resName))
{
using (var reader = new System.Resources.ResourceReader(stream))
{
return reader.Cast<DictionaryEntry>().
Select(entry =>
(string)entry.Key).ToArray();
}
}
}