Grazie a GitHub.com/Mono/T4 , al momento puoi farlo sia per build .NET Core che Visual Studio aggiungendo questo al tuo .csproj
file:
<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>
Se trasformi i tuoi modelli in diversi linguaggi di programmazione, dovresti aggiungere qualcosa come <Compile Remove="**\*.vb" />
e<Compile Include="**\*.vb" />
per compilare questi file anche se non hai ancora generato i file.
Remove
e Include
trucco necessari solo per la prima generazione di generazione, oppure puoi accorciare XML in questo modo:
<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>
ed esegui build due volte (per la prima volta). Se hai già generato file impegnati nel repository non ci saranno problemi con le ricostruzioni con entrambi gli esempi.
In Visual Studio potresti voler vedere qualcosa del genere:
Invece di questo:
Quindi aggiungi qualcosa di simile al tuo file di progetto:
<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>
Esempio completo qui: GitHub.com/Konard/T4GenericsExample (include la generazione di più file da un singolo modello).