Dzięki GitHub.com/Mono/T4 w tej chwili możesz to zrobić zarówno dla kompilacji .NET Core, jak i Visual Studio, dodając to do swojego .csproj
pliku:
<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>
Jeśli przekształcasz swoje szablony na różne języki programowania, powinieneś dodać coś takiego jak <Compile Remove="**\*.vb" />
i <Compile Include="**\*.vb" />
, aby skompilować te pliki, nawet jeśli nie masz jeszcze wygenerowanych plików.
Remove
i Include
sztuczka potrzebna tylko przy pierwszym generowaniu, lub możesz skrócić XML w ten sposób:
<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>
i po prostu dwukrotnie uruchom kompilację (po raz pierwszy). Jeśli wygenerowałeś już pliki zatwierdzone do repozytorium, nie będzie problemów z odbudową w obu przykładach.
W programie Visual Studio możesz chcieć zobaczyć coś takiego:
zamiast tego:
Więc dodaj coś takiego do pliku projektu:
<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>
Pełny przykład tutaj: GitHub.com/Konard/T4GenericsExample (obejmuje generowanie wielu plików z jednego szablonu).