Список всех встроенных ресурсов в папке - PullRequest
41 голосов
/ 21 ноября 2011

В моем решении была папка с несколькими файлами. Все эти файлы имеют встроенное действие «Встроенный ресурс».

С этим кодом я могу получить файл:

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

Но есть ли способ получить все *.txt файлы в этой папке? Список имен или метод для их повторения?

Ответы [ 4 ]

83 голосов
/ 21 ноября 2011

Вы можете проверить

assembly.GetManifestResourceNames()

, который возвращает массив строк всех содержащихся ресурсов.Затем вы можете отфильтровать этот список, чтобы найти все ваши *.txt файлы, хранящиеся как встроенные ресурсы.

Подробнее см. Документы MSDN для GetManifestResourceNames.

18 голосов
/ 01 марта 2015

Попробуйте, возвращает массив со всеми .txt файлами внутри Папка .

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();
}

ПРИМЕЧАНИЕ. Раскомментируйте строку //.Select(..., чтобы получить имя файла.

5 голосов
/ 21 ноября 2011

попробуйте с этим. здесь вы получаете все файлы

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

Т, конечно, ваш тип. так что вы можете использовать его общий

0 голосов
/ 07 июля 2013

Только что взломали, используйте:

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());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...