Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何计算文件夹中的资源_C#_Wpf_Resources_Directory - Fatal编程技术网

C# 如何计算文件夹中的资源

C# 如何计算文件夹中的资源,c#,wpf,resources,directory,C#,Wpf,Resources,Directory,我的项目中有几个图像设置为资源。 现在,我想将该文件夹中的图像量存储在一个变量中 我怎样才能做到这一点? 我正在构建一个WPF应用程序。 当我尝试像这样使用包URL时: string[] filePaths = Directory.GetFiles("pack://application:,,,/Resources/Images/Output/", "*.jpg"); 我得到一个错误,给定路径的格式不受支持 注意事项: 资源没有在某些文件中指定,它们只是在其构建操作上设置为资源 我只需要集

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

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

 string[] filePaths = Directory.GetFiles("pack://application:,,,/Resources/Images/Output/", "*.jpg");
我得到一个错误,给定路径的格式不受支持

注意事项:

  • 资源没有在某些文件中指定,它们只是在其构建操作上设置为资源
  • 我只需要集合中的一些图像。它们位于特定文件夹中
我尝试过的字符串:

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

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

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

名称空间MyNamespace
{
公共静态类MyFileCounter
{
公共静态int fileinfolder=;
}
}

将您的投票重定向到:)

对不起,我该怎么做?我不知道使用什么uri,但这不是来自资源,而是来自D:\。我需要将此部署到计算机,并需要将图像保存在程序集中。您无法计算资源,因此必须计算将用作资源的文件数。我更新了我的答案,你得到了T4文件所在的文件夹。从那里你可以调整路径到你喜欢的地方。我似乎缺少一些知识,以前从未使用过模板。我已尝试在我需要的页面中写入,但它无法识别标记将项目中文件的文件扩展名更改为
.tt
,读取并安装。但这将计算我的所有资源图像,但我只想计算一些。顺便说一下,我没有提到我正在使用WPF,所以我将位图更改为BitmapImage,并且它不计算任何项目。我们如何知道哪些图像应该计算,哪些不应该计算。请在问题中明确说明你的要求。在代码中增加变量
i
之前,请给出更多if子句。我将编辑itI。我已成功使用此代码获取我资源中的图像项目数。您确定已将图像文件添加为resx文件吗?不,它们不在resx文件中(我已编辑了该问题),它们只是将“生成操作”设置为“资源”的图像。我在代码的其他部分使用它们,它们工作得很好,因此我知道它们在其中。如果它们不是resx文件,我认为您是通过指定物理路径从其他部分访问的。在这种情况下,请给出正确的路径。就这一点而言,我在WPF方面不是很有能力。请不要在标题中添加“C#”或“[WPF]”之类的内容。这就是标签的用途。
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());