Drizin / Drizin/CodegenCS

[Feature request, dotnet-codegencs] Be able to reuse code for templates

Abierto
#39 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
C#
Estrellas
307
Forks
40
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Hi!

First of all, thank you very much for the tool! It is easy to use, it's simple and it keeps saving a lot of time for our team.

Second, I need an advice on how to to reuse code for templates while keeping "text template + codegen tool" approach. We do use dotnet-codegencs tool to scaffold boilerplate code for our projects. Something like `dotnet new` but with some logic involved. It will be nice to be able to reuse basic logic and do not copypaste it across csx templates.

What I have tried so far

## Use `#load` directive
Sadly, this option is not supported. The `TemplateBuilder` supports only `#r` directives.

## Pass multiple templates as args to the dotnet-codegencs tool
Not supported, there currently can be only one template

## reference local dll (not nuget package)
```
#r "ScaffoldHelpers.dll"
...
```
or
```
dotnet-codegencs template run .\TestTemplate.csx -r .\ScaffoldHelpers.dll
```
Fail with
```
Unhandled exception: System.TypeInitializationException: The type initializer for 'TestTemplate' threw an exception.
---> System.IO.FileNotFoundException: Could not load file or assembly 'ScaffoldHelpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
```
the reason is that referenced assemblies are not copied into the build directory and are not loaded by TemplateLoader.

## Write custom runner using TemplateBuilder / TemplateLoader classes
Sadly, these are not distributed as a nuget packages, only as a part of dotnet-codegencs tool

## Fork the dotnet-codegencs
We are currently using custom fork but it looks like a hack, I'd prefer to keep using original tool:)

Thanks in advance, hope you have a good Holidays!

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.