RSCG – NTypewriter

RSCG – NTypewriter
 
 

name NTypewriter
nuget https://www.nuget.org/packages/NTypewriter.SourceGenerator
link https://github.com/NeVeSpl/NTypewriter
author NeVeSpl

Generating code with a template from classes in project

 

This is how you can use NTypewriter .

The code that you start with is


<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net9.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <None Remove="test.nt" />
  </ItemGroup>

  <ItemGroup>
    <AdditionalFiles Include="test.nt" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="NTypewriter.SourceGenerator" Version="0.5.9" />
  </ItemGroup>

	<PropertyGroup>
		<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
		<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
	</PropertyGroup>
</Project>


The code that you will use is


// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");




namespace DemoTemplateConsole;
public class PersonModel
{
    public int Name { get; set; }
}


 

The code that is generated is

// NTypewriter.SourceGenerator                      0.5.9.0  C:\Users\ignat\AppData\Local\Temp\VBCSCompiler\AnalyzerAssemblyLoader\f44f8d8546d2454b92ff0e62b6eaea10\4a40c9db-c376-41d2-8a7c-26eda7296396\NTypewriter.SourceGenerator.dll NTypewriter.SourceGenerator, Version=0.5.9.0, Culture=neutral, PublicKeyToken=null
// NTypewriter                                      0.5.9.0  C:\Users\ignat\AppData\Local\Temp\NTSG\NTypewriter.v0.5.9.0.dll NTypewriter, Version=0.5.9.0, Culture=neutral, PublicKeyToken=686471615d7a8f08
// NTypewriter.CodeModel                            0.5.9.0  C:\Users\ignat\AppData\Local\Temp\NTSG\NTypewriter.CodeModel.v0.5.9.0.dll NTypewriter.CodeModel, Version=0.5.9.0, Culture=neutral, PublicKeyToken=9bd097c4961606db
// NTypewriter.CodeModel.Functions                  0.5.9.0  C:\Users\ignat\AppData\Local\Temp\NTSG\NTypewriter.CodeModel.Functions.v0.5.9.0.dll NTypewriter.CodeModel.Functions, Version=0.5.9.0, Culture=neutral, PublicKeyToken=64a6b4cdbb438ab5
// NTypewriter.CodeModel.Roslyn                     0.5.9.0  C:\Users\ignat\AppData\Local\Temp\NTSG\NTypewriter.CodeModel.Roslyn.v0.5.9.0.dll NTypewriter.CodeModel.Roslyn, Version=0.5.9.0, Culture=neutral, PublicKeyToken=81d8e46ee60c9c4c
// NTypewriter.Editor.Config                        0.5.9.0  C:\Users\ignat\AppData\Local\Temp\NTSG\NTypewriter.Editor.Config.v0.5.9.0.dll NTypewriter.Editor.Config, Version=0.5.9.0, Culture=neutral, PublicKeyToken=b9f8710003231974
// NTypewriter.Runtime                              0.5.9.0  C:\Users\ignat\AppData\Local\Temp\NTSG\NTypewriter.Runtime.v0.5.9.0.dll NTypewriter.Runtime, Version=0.5.9.0, Culture=neutral, PublicKeyToken=4fac57df20922078
// Scriban.Signed                                   5.0.0.0  C:\Users\ignat\AppData\Local\Temp\NTSG\Scriban.Signed.v5.10.0.0.dll Scriban.Signed, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5675fb69b15f2433
// System.Text.Json                                 6.0.0.0  C:\Users\ignat\AppData\Local\Temp\NTSG\System.Text.Json.v6.0.0.0.dll System.Text.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
// System                                           4.0.0.0  C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// Microsoft.CodeAnalysis                           4.14.0.0  C:\Program Files\Microsoft Visual Studio\2022\Preview\MSBuild\Current\Bin\Roslyn\Microsoft.CodeAnalysis.dll Microsoft.CodeAnalysis, Version=4.14.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// Microsoft.CodeAnalysis.CSharp                    4.14.0.0  C:\Program Files\Microsoft Visual Studio\2022\Preview\MSBuild\Current\Bin\Roslyn\Microsoft.CodeAnalysis.CSharp.dll Microsoft.CodeAnalysis.CSharp, Version=4.14.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// Microsoft.CodeAnalysis.Scripting                 4.0.0.0  C:\Users\ignat\AppData\Local\Temp\NTSG\Microsoft.CodeAnalysis.Scripting.v4.0.1.0.dll Microsoft.CodeAnalysis.Scripting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// Microsoft.CodeAnalysis.CSharp.Scripting          4.0.0.0  C:\Users\ignat\AppData\Local\Temp\NTSG\Microsoft.CodeAnalysis.CSharp.Scripting.v4.0.1.0.dll Microsoft.CodeAnalysis.CSharp.Scripting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// Microsoft.CodeAnalysis.Workspaces                4.0.0.0  C:\Users\ignat\AppData\Local\Temp\NTSG\Microsoft.CodeAnalysis.Workspaces.v4.0.1.0.dll Microsoft.CodeAnalysis.Workspaces, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// CurrentDomain: VBCSCompiler.exe
    // NTypewriter.SourceGenerator v0.5.9.0
    // total runs     : 4, total renders : 4
    // touch file     : D:\gth\RSCG_Examples\v2\rscg_examples\NTypewriter\src\DemoTemplate\DemoTemplateConsole\bin\Debug\net9.0\.touch
    // log file       : D:\gth\RSCG_Examples\v2\rscg_examples\NTypewriter\src\DemoTemplate\DemoTemplateConsole\bin\Debug\net9.0\DemoTemplateConsole.ntsg.log                    
    // last build     : 2/15/2025 5:39:39 PM
    // last *.nt edit : 2/15/2025 5:39:31 PM
    // last render    : 2/15/2025 5:39:39 PM

Code and pdf at

https://ignatandrei.github.io/RSCG_Examples/v2/docs/NTypewriter