【问题标题】:List all embedded resources in a folder列出文件夹中的所有嵌入资源
【发布时间】:2011-11-21 06:58:50
【问题描述】:

在我的解决方案中,a 有一个包含几个文件的文件夹。所有这些文件都有构建操作“嵌入式资源”。

通过这段代码我可以得到一个文件:

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

但是有什么方法可以获取此文件夹中的所有*.txt 文件?名称列表或遍历它们的方法?

【问题讨论】:

    标签: c# wpf resources


    【解决方案1】:

    你可以去看看

    assembly.GetManifestResourceNames()
    

    它返回一个包含所有资源的字符串数组。然后,您可以过滤该列表以查找存储为嵌入式资源的所有 *.txt 文件。

    详情请见MSDN docs for GetManifestResourceNames

    【讨论】:

    • 由于某种原因在VB.net 中,输出不包含资源所在的文件夹名称 vs C#
    【解决方案2】:

    试试这个,返回一个数组,其中包含 Folder 目录中的所有 .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(... 行以获取文件名。

    【讨论】:

      【解决方案3】:

      试试这个。在这里你可以得到所有文件

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

      T 当然是你的类型。所以你可以通用的使用它

      【讨论】:

        【解决方案4】:

        刚刚破解了这个,使用:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-17
          • 1970-01-01
          • 2013-04-04
          • 1970-01-01
          • 2016-02-11
          • 1970-01-01
          • 2018-03-11
          • 1970-01-01
          相关资源
          最近更新 更多