我如何计算文件夹中的资源

时间:2012-02-24 14:18:38

标签: c# wpf resources directory

我在项目中将多个图像设置为资源。 现在我想在变量中存储我在该文件夹中的图像数量。

我怎么能做到这一点? 我正在构建一个WPF应用程序。 当我尝试使用这样的包URL时:

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

我收到一条错误,指出不支持给定路径的格式。

备注:

  • 资源未在某个文件中指定,只需将其设置为资源构建操作
  • 我只需要装配中的一些图像。它们位于特定文件夹中

我试过的字符串:

  • 包://应用:,,, /资源/图像/输出/

  • 年鉴;组件/资源/图像/输出/

2 个答案:

答案 0 :(得分:1)

将其写为普通的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 #>;
    }
}

答案 1 :(得分:0)

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

将您的投票重定向到here:)