Terima kasih kepada GitHub.com/Mono/T4 , saat ini Anda dapat melakukannya untuk membangun .NET Core dan Visual Studio dengan menambahkan ini ke .csproj
file Anda :
<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>
Jika Anda mengubah template Anda ke bahasa pemrograman yang berbeda Anda harus menambahkan sesuatu seperti <Compile Remove="**\*.vb" />
dan <Compile Include="**\*.vb" />
untuk mendapatkan file-file ini dikompilasi bahkan jika Anda belum membuat file.
Remove
dan Include
trik hanya diperlukan untuk generasi pertama kali, atau Anda dapat membuat XML lebih pendek seperti ini:
<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>
dan jalankan build dua kali (untuk pertama kali). Jika Anda telah membuat file yang dikomit ke repositori, tidak akan ada masalah pada pembangunan kembali dengan kedua contoh.
Di Visual Studio Anda mungkin ingin melihat sesuatu seperti ini:
alih-alih ini:
Jadi tambahkan sesuatu seperti ini ke file proyek Anda:
<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>
Contoh lengkap di sini: GitHub.com/Konard/T4GenericsExample (termasuk pembuatan beberapa file dari templat tunggal).