ขอบคุณGitHub.com/Mono/T4ในขณะนี้คุณสามารถทำได้สำหรับทั้ง. NET Core และ Visual Studio builds โดยการเพิ่มสิ่งนี้ลงใน.csproj
ไฟล์ของคุณ:
<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>
หากคุณแปลงแม่แบบของคุณเป็นภาษาการเขียนโปรแกรมที่แตกต่างกันคุณควรเพิ่มสิ่งที่ชอบ<Compile Remove="**\*.vb" />
และ<Compile Include="**\*.vb" />
เพื่อให้ได้รับการรวบรวมไฟล์เหล่านี้แม้ว่าคุณจะยังไม่ได้สร้างไฟล์
Remove
และInclude
เคล็ดลับที่จำเป็นสำหรับการสร้างครั้งแรกเท่านั้นหรือคุณสามารถทำให้ XML สั้นลงเช่นนี้
<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>
และเรียกใช้งาน build สองครั้ง (เป็นครั้งแรก) หากคุณได้สร้างไฟล์ที่คอมมิทไปที่ที่เก็บแล้วจะไม่มีปัญหาในการสร้างใหม่ด้วยทั้งสองตัวอย่าง
ใน Visual Studio คุณอาจต้องการเห็นสิ่งนี้:
แทนสิ่งนี้:
ดังนั้นเพิ่มสิ่งนี้ในไฟล์โครงการของคุณ:
<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>
ทำตัวอย่างที่นี่ให้สมบูรณ์: GitHub.com/Konard/T4GenericsExample (รวมถึงการสร้างไฟล์หลายไฟล์จากเทมเพลตเดียว)