C# Get embedded resources from specific folder or distinguish between embedded resources in different folders

Brandon picture Brandon · Apr 11, 2013 · Viewed 14.4k times · Source

The title sums it up pretty well. I know I can get the embedded resource names using:

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

But I'd like to be able to get the embedded resources from only a specific folder. Or at least be able to distinguish between embedded resources from different folders.

Answer

Timothy Schoonover picture Timothy Schoonover · Apr 11, 2013

The resources are returned in the following format.

[Namespace].[Folder].[Filename]

Note that all folders in the path are separated by .'s. So if you had an embedded resource with the following configuration

myproject.csproj (Namespace = com.mycompany.myproject)
- Resources
  - Images
    - Icons
      - my_icon.ico

The resource name would be...

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

If you want to select all from a specific folder, you could use the following LINQ expression or modify it according to your needs.

string prefix = "your_namespace.your_folder."

var resourceNames = Assembly.GetExecutingAssembly()
    .GetManifestResourceNames()
    .Where(name => name.StartsWith(prefix));