Gracias a GitHub.com/Mono/T4 , en este momento puede hacerlo para las compilaciones de .NET Core y Visual Studio agregando esto a su .csproj
archivo:
<ItemGroup>
<DotNetCliToolReference Include="dotnet-t4-project-tool" Version="2.0.5" />
<TextTemplate Include="**\*.tt" />
</ItemGroup>
<Target Name="TextTemplateTransform" BeforeTargets="BeforeBuild">
<ItemGroup>
<Compile Remove="**\*.cs" />
</ItemGroup>
<Exec WorkingDirectory="$(ProjectDir)" Command="dotnet t4 %(TextTemplate.Identity)" />
<ItemGroup>
<Compile Include="**\*.cs" />
</ItemGroup>
</Target>
Si transforma sus plantillas a diferentes lenguajes de programación, debe agregar algo como <Compile Remove="**\*.vb" />
y <Compile Include="**\*.vb" />
para compilar estos archivos, incluso si aún no ha generado archivos.
Remove
y Include
truco solo necesario para la primera generación, o puede acortar el XML de esta manera:
<ItemGroup>
<DotNetCliToolReference Include="dotnet-t4-project-tool" Version="2.0.5" />
<TextTemplate Include="**\*.tt" />
</ItemGroup>
<Target Name="TextTemplateTransform" BeforeTargets="BeforeBuild">
<Exec WorkingDirectory="$(ProjectDir)" Command="dotnet t4 %(TextTemplate.Identity)" />
</Target>
y simplemente ejecuta build dos veces (por primera vez). Si ya ha generado archivos comprometidos con el repositorio, no habrá problemas en las reconstrucciones con ambos ejemplos.
En Visual Studio, es posible que desee ver algo como esto:
en lugar de esto:
Entonces agregue algo como esto a su archivo de proyecto:
<ItemGroup>
<Compile Update="UInt16Class.cs">
<DependentUpon>UInt16Class.tt</DependentUpon>
</Compile>
<Compile Update="UInt32Class.cs">
<DependentUpon>UInt32Class.tt</DependentUpon>
</Compile>
<Compile Update="UInt64Class.cs">
<DependentUpon>UInt64Class.tt</DependentUpon>
</Compile>
<Compile Update="UInt8Class.cs">
<DependentUpon>UInt8Class.tt</DependentUpon>
</Compile>
</ItemGroup>
Ejemplo completo aquí: GitHub.com/Konard/T4GenericsExample (incluye la generación de múltiples archivos a partir de una sola plantilla).