Как я могу считать ресурсы в папке - PullRequest
2 голосов
/ 24 февраля 2012

У меня есть несколько изображений, установленных как Resources в моем проекте. Теперь я хочу сохранить в переменной количество изображений в этой папке.

Как мне этого добиться? Я создаю приложение WPF. Когда я пытаюсь использовать пакет URL, как это:

 string[] filePaths = Directory.GetFiles("pack://application:,,,/Resources/Images/Output/", "*.jpg");

я получаю сообщение об ошибке, что формат данного пути не поддерживается.

Примечания:

  • Ресурсы не указаны в каком-либо файле, они просто установлены как Ресурсы для его Действие построения .
  • Мне нужны только некоторые изображений в сборке. Они находятся в определенной папке

Строки, которые я пробовал:

  • упаковка: // Применение: ,,, / Ресурсы / Images / Output /

  • Ежегодник; компонент / Ресурсы / Images / Output /

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Напишите его как обычный код C # (используя Directory.GetFile()) и оберните его в шаблон T4.

Вы не можете сосчитать ресурсы, поэтому вы должны сосчитать файлы, которые будут использоваться как ресурсы,Вот первый выстрел:

<#@ template language="C#" debug="true" hostSpecific="true" #>
<#@ output extension=".cs" #>
<#@ Assembly Name="System.Core.dll" #>
<#@ import namespace="System" #>
<#@ import namespace="System.IO" #>
<#
    var directory = Path.Combine(Path.GetDirectoryName(this.Host.TemplateFile), "Resources");
    var folderCounter = Directory.GetFiles(@"D:\", "*.*").Length;
#>

namespace MyNamespace
{
    public static class MyFilesCounter
    {
        public static int FilesInFolder = <#= folderCounter #>;
    }
}
0 голосов
/ 24 февраля 2012
int i = 0;
ResourceSet resourceSet = Properties.Resources.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true);
foreach (DictionaryEntry entry in resourceSet)
{
    string resourceName = entry.Key; //if you need all this, but who knows.
    object resource = entry.Value;

    if ((resource.GetType() == typeof(System.Drawing.Bitmap) || resource.GetType() == typeof(System.Drawing.Icon)) && 
         resourceName == "someString")
    {
        i++;
    }    
}

MessageBox.Show(i.ToString());

Перенаправьте свои голоса на здесь :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...