Pasted is a simple .NET source generator that allows for compile time embedding of text files into your application. It is particularly useful for embedding resources such as HTML, CSS, JavaScript, or any other text-based files directly into your code. It works well for source generators and applications that are compiled ahead of time (AOT).
Add the embedded files to your project, for example:
<ItemGroup>
<AdditionalFiles Include="wwwroot\index.html" />
<AdditionalFiles Include="wwwroot\css\site.css" />
<AdditionalFiles Include="wwwroot\js\site.js" />
</ItemGroup>Then in an .editorconfig file add the following property,
[wwwroot/index.html]
embed = true
[wwwroot/css/site.css]
embed = true
[wwwroot/js/site.js]
embed = trueThen finally add the Pasted source generator to your project:
<ItemGroup>
<PackageReference Include="Pasted" Version="x.x.x">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>The source generator will then generate a static class with constants for each file, which you can use in your code:
// the EmbeddedFiles static class is generated by the source generator
const string html = EmbeddedFiles.Index;
const string css = EmbeddedFiles.Css;
const string js = EmbeddedFiles.Js;The namespace, class name, and constant field names can be configured in the
.editorconfig file.
| Option | Type | Default | Description |
|---|---|---|---|
| embed | boolean | false | Enables embedding this file into the generated class. Files with embed = true will be included. |
| namespace | string | Pasted | Overrides the namespace used for the generated static class. |
| class_name | string | EmbeddedFiles | Overrides the name of the generated static class that contains file constants. |
| name | string | Derived from file name (sans extension) | Overrides the constant field name for the file; by default uses the file name without extension. |
| public | boolean | false | Controls visibility of generated class and its fields; true makes them public, else internal. |