martes, 13 de abril de 2021

Ver el código fuente generado por source generators

.NET Core

A raíz de los posts sobre generadores de código (como éste y éste), un amigo del blog me escribió para ver si de alguna forma era posible examinar el código fuente generado para poder depurarlo con mayor facilidad.

Y en efecto, es posible. Pero en vez de responderle directamente, he pensado que sería mejor compartirlo por aquí, de forma que pueda resultar de utilidad para alguien más :)

Por defecto, los archivos añadidos al proyecto por los generadores no llegan a tocar tierra, pues se gestionan directamente en memoria. Sin embargo, podemos forzar su escritura a disco, basta con añadir la siguiente sección al archivo .csproj del proyecto consumidor del generador:

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

Según esta configuración, los archivos generados serán depositados en la carpeta /obj/GeneratedFiles del proyecto. En esa carpeta, a su vez, encontraremos una carpeta por cada ensamblado generador incluido en el proyecto y, dentro de ésta otra subcarpeta específica para cada generador.

Espero que os sea de utilidad :)

No hay comentarios:

Publicar un comentario