Graças ao GitHub.com/Mono/T4 , no momento você pode fazer isso para compilações do .NET Core e do Visual Studio adicionando isso ao seu .csproj
arquivo:
<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 você transformar seus modelos em diferentes linguagens de programação, adicione algo como <Compile Remove="**\*.vb" />
e<Compile Include="**\*.vb" />
para compilar esses arquivos, mesmo que você ainda não tenha gerado arquivos.
Remove
e Include
truque necessário apenas para a primeira geração, ou você pode tornar o XML mais curto assim:
<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>
e apenas execute o build duas vezes (pela primeira vez). Se você já gerou arquivos confirmados no repositório, não haverá problemas nas reconstruções com os dois exemplos.
No Visual Studio, você pode querer ver algo assim:
em vez disso:
Portanto, adicione algo assim ao seu arquivo de projeto:
<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>
Exemplo completo aqui: GitHub.com/Konard/T4GenericsExample (inclui a geração de vários arquivos a partir de um único modelo).