从特定文件夹获取嵌入资源或区分不同文件夹中的嵌入资源

本文关键字:嵌入资源 文件夹 获取 | 更新日期: 2023-09-27 18:08:46

标题总结得很好。我知道我可以得到嵌入的资源名称使用:

        var assembly = System.Reflection.Assembly.GetExecutingAssembly();
        string[] files = assembly.GetManifestResourceNames();

但是我希望能够从一个特定的文件夹中获得嵌入的资源。或者至少能够区分来自不同文件夹的嵌入资源。

从特定文件夹获取嵌入资源或区分不同文件夹中的嵌入资源

资源返回格式如下:

[Namespace].[Folder].[Filename]

请注意,路径中的所有文件夹都由.分隔。因此,如果您有一个具有以下配置的嵌入式资源

<>之前myproject的。csproj(命名空间= com.mycompany.myproject)——资源——图片——图标——my_icon.ico之前

资源名应该是…

com.mycompany.myproject.Resources.Images.Icons.my_icon.ico

如果你想从一个特定的文件夹中选择全部,你可以使用下面的LINQ表达式,或者根据你的需要修改它。

string prefix = "your_namespace.your_folder."
var resourceNames = Assembly.GetExecutingAssembly()
    .GetManifestResourceNames()
    .Where(name => name.StartsWith(prefix));

如果创建一个名为Images的文件夹,并将文件放在那里,则资源的名称将变为Assembly.Images.fileName。

你可以试着这样写:

var assembly = System.Reflection.Assembly.GetExecutingAssembly();
var names = assembly.GetManifestResourceNames().Where (n => n.Contains(".Images."));