Enumeración de recursos de ensamblado .NET en tiempo de ejecución

Tengo un ensamblaje de recursos con archivos de imagen que se crean utilizando la acción de comstackción de recursos o contenido . Esto hace que estos archivos sean accesibles usando el Uris. Sin embargo, no puedo encontrar la manera de enumerar dichos recursos.
Si configuro la acción de comstackción en Recurso incrustado , es posible enumerar los archivos con el siguiente código:

string[] resources = Assembly.GetExecutingAssembly().GetManifestResourceNames(); 

pero a su vez hace que estos archivos sean inaccesibles usando Uris.

La pregunta es: ¿cómo enumerar los recursos que se comstackn con la acción de comstackción de recursos o contenidos ?

NOTA: Como señaló Thomas Levesque, es posible enumerar dichos recursos aprovechando AssemblyAssociatedContentFileAttribute, pero parece que solo funciona para los ensamblados de la aplicación WPF y no para los de la biblioteca de la clase. Entonces la pregunta aún está abierta.

Puede enumerar los atributos AssemblyAssociatedContentFile definidos en el conjunto:

 var resourceUris = Assembly.GetEntryAssembly() .GetCustomAttributes(typeof(AssemblyAssociatedContentFileAttribute), true) .Cast() .Select(attr => new Uri(attr.RelativeContentFilePath)); 

También puede consultar esta página para una manera de enumerar los recursos BAML.


ACTUALIZACIÓN: en realidad, la solución anterior funciona solo para archivos de contenido. El siguiente método devuelve todos los nombres de los recursos (incluidos los recursos BAML, imágenes, etc.):

  public static string[] GetResourceNames() { var asm = Assembly.GetEntryAssembly(); string resName = asm.GetName().Name + ".g.resources"; using (var stream = asm.GetManifestResourceStream(resName)) using (var reader = new System.Resources.ResourceReader(stream)) { return reader.Cast().Select(entry => (string)entry.Key).ToArray(); } }