Skip to content
bmazzarolPublic

About

Compile time text file embedding for C#

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pasted

Pasted

Text files, baked into the binary.

A source generator that turns text files into string constants at compile time, for source generators and AOT binaries that have no assembly directory to read from at runtime.

Nuget Coverage Quality Gate Status CD Build Check Markdown

🏃 Getting Started | 📚 Documentation

Why?

Pasted is a .NET source generator that embeds the contents of a text file into C# source at compile time. It is useful for resources such as HTML, CSS and JavaScript that would otherwise be read from disk at runtime. It works well for source generators and applications that are compiled ahead of time (AOT).

How to use

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 = true

Then 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.

Configuration Options

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.

About

Compile time text file embedding for C#

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages