【问题标题】:How can i count Resources in a folder我如何计算文件夹中的资源
【发布时间】:2012-03-14 23:45:20
【问题描述】:

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

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

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

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

注意事项:

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

我试过的字符串:

  • pack://application:,,,/Resources/Images/Output/

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

【问题讨论】:

  • 请不要在标题中添加“in C#”或“[WPF]”之类的内容。这就是标签的用途。

标签: c# wpf resources directory


【解决方案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 #>;
    }
}

【讨论】:

  • 对不起,我该怎么做?我不知道要使用什么 uri
  • 但这不是来自资源,而是来自 D:\。我需要将其部署到计算机并需要保存在程序集中的图像。
  • 资源不能算,所以要算资源的文件。我更新了我的答案,你得到了 T4 文件所在的文件夹。然后你可以从那里调整路径到你喜欢的地方。
  • 我似乎缺少一些知识,以前从未使用过模板。我已经尝试在我需要的页面中编写 但它无法识别 标签
  • 将项目中文件的文件扩展名改为.tt,阅读this article并安装this Visual Studio Extension
【解决方案2】:
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 :)

【讨论】:

  • 但这将计算我所有的资源图像,但我只想计算一些。顺便说一句,我没有提到我正在使用 WPF,所以我将 Bitmap 更改为 BitmapImage 并且它没有计算任何项目。
  • 我们如何知道哪些图像应该计算在内,哪些不应该计算在内。请在问题中清楚地提及您的要求。在代码中增加变量 i 之前,请提供更多 if 子句。我会编辑它
  • 我已成功使用此代码获取资源中图像项的数量。您确定已将图像文件添加为 resx 文件吗?
  • 没有他们不在 resx 文件中(我已经编辑了问题),他们只是将构建操作设置为资源的图像。我在代码的其他部分使用它们并且它们工作得很好,所以我知道它们在那里
  • 如果它们不是 resx 文件,我认为您是通过指定物理路径从其他部分访问的。在这种情况下,请给出正确的路径。就此而言,我在 WPF 方面不是很胜任。
猜你喜欢
  • 2012-06-16
  • 1970-01-01
  • 2011-12-02
  • 1970-01-01
  • 2012-12-07
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多