c# wpf resources

c# - Enumerar todos los recursos incrustados en una carpeta



resourcedictionary c# (4)

Podrías echarle un vistazo

assembly.GetManifestResourceNames()

que devuelve una matriz de cadenas de todos los recursos contenidos. A continuación, puede filtrar esa lista para encontrar todos sus archivos *.txt almacenados como recursos incrustados.

Consulte los documentos de MSDN para GetManifestResourceNames para obtener más información.

En mi solución a tenía una carpeta con algunos archivos. Todos estos archivos tienen la Acción de compilación "Recurso incrustado".

Con este código puedo obtener un archivo:

assembly.GetManifestResourceStream(assembly.GetName().Name + ".Folder.File.txt");

¿Pero hay alguna forma de obtener todos los archivos *.txt en esta carpeta? ¿Una lista de nombres o un método para iterar a través de todos?


Pruébalo con esto. aquí obtienes todos los archivos

string[] embeddedResources = Assembly.GetAssembly(typeof(T)).GetManifestResourceNames();

T es por supuesto tu tipo. para que pueda usarlo genérico


Simplemente descifrado esto, use:

Assembly _assembly; _assembly = Assembly.GetExecutingAssembly(); List<string> filenames = new List<string>(); filenames = _assembly.GetManifestResourceNames().ToList<string>(); List<string> txtFiles = new List<string>(); for (int i = 0; i < filenames.Count(); i++) { string[] items = filenames.ToArray(); if (items[i].ToString().EndsWith(".txt")) { txtFiles.Add(items[i].ToString()); } }


Pruebe esto, devuelve una matriz con todos los archivos .txt dentro del directorio de la carpeta .

private string[] GetAllTxt() { var executingAssembly = Assembly.GetExecutingAssembly(); string folderName = string.Format("{0}.Resources.Folder", executingAssembly.GetName().Name); return executingAssembly .GetManifestResourceNames() .Where(r => r.StartsWith(folderName) && r.EndsWith(".txt")) //.Select(r => r.Substring(constantResName.Length + 1)) .ToArray(); }

NOTA: Descomente el //.Select(... línea para obtener el nombre del archivo.