Fluent access to embedded resources with string, stream, byte array, and JSON deserialization support.
dotnet add package Philiprehberger.EmbeddedResourceFluent access to embedded resources with string, stream, byte array, and JSON deserialization support.
dotnet add package Philiprehberger.EmbeddedResource
using Philiprehberger.EmbeddedResource;
// Read as string
string html = EmbeddedResource.ReadString("Templates/welcome.html");
// Read as bytes
byte[] data = EmbeddedResource.ReadBytes("Assets/logo.png");
// Open as stream
using var stream = EmbeddedResource.OpenStream("Data/config.xml");
using Philiprehberger.EmbeddedResource;
// Deserialize a JSON resource directly into a typed object
var settings = EmbeddedResource.ReadJson<AppSettings>("Config/defaults.json");
Console.WriteLine(settings.Theme); // "dark"
Console.WriteLine(settings.MaxRetries); // 3
using Philiprehberger.EmbeddedResource;
// List all embedded resource names in the calling assembly
string[] all = EmbeddedResource.List();
// Filter by pattern
string[] templates = EmbeddedResource.List("*.html");
// Read from a specific assembly
var assembly = typeof(MyPlugin).Assembly;
string text = EmbeddedResource.ReadString("plugin-config.json", assembly);
| Method | Description |
|---|---|
ReadString(name, assembly?) | Read an embedded resource as a string. |
ReadBytes(name, assembly?) | Read an embedded resource as a byte array. |
OpenStream(name, assembly?) | Open an embedded resource as a stream. |
ReadJson<T>(name, assembly?) | Read and deserialize a JSON embedded resource. |
List(pattern?, assembly?) | List available embedded resource names. |
Name resolution tries an exact match first, then falls back to suffix matching. For example, "Templates/welcome.html" will match "MyApp.Templates.welcome.html".
Thrown when a resource cannot be found. Includes the list of available resource names in the exception message for easier debugging.
dotnet build src/Philiprehberger.EmbeddedResource.csproj --configuration Release
If you find this project useful: