web-dev-qa-db-fra.com

Liste toutes les ressources intégrées dans un dossier

Dans ma solution, nous avions un dossier avec quelques fichiers. Tous ces fichiers ont l'action Build "Embedded Resource".

Avec ce code, je peux obtenir un fichier:

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

Mais existe-t-il un moyen d'obtenir tout *.txt fichiers dans ce dossier? Une liste de noms ou une méthode pour les parcourir tous?

41
San

Vous pouvez vérifier

Assembly.GetManifestResourceNames()

qui renvoie un tableau de chaînes de toutes les ressources contenues. Vous pouvez ensuite filtrer cette liste pour trouver tous vos *.txt fichiers stockés en tant que ressources intégrées.

Voir documentation MSDN pour GetManifestResourceNames pour plus de détails.

83
marc_s

Essayez ceci, retourne un tableau avec tous les fichiers .txt dans le répertoire Folder.

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(folderName.Length + 1))
        .ToArray();
}

REMARQUE: décommentez le //.Select(... ligne afin d'obtenir le nom du fichier.

18
dbvega

essayez avec ça. ici vous obtenez tous les fichiers

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

T est bien sûr votre type. vous pouvez donc l'utiliser générique

5
masterchris_99