Cảm ơn GitHub.com/Mono/T4 , tại thời điểm này, bạn có thể làm điều đó cho cả bản dựng .NET Core và Visual Studio bằng cách thêm phần này vào .csproj
tệp của mình :
<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>
Nếu bạn chuyển đổi các mẫu của mình sang các ngôn ngữ lập trình khác nhau, bạn nên thêm một số thứ như <Compile Remove="**\*.vb" />
và<Compile Include="**\*.vb" />
để các tệp này được biên dịch ngay cả khi bạn chưa tạo tệp.
Remove
và Include
thủ thuật chỉ cần thiết cho lần tạo đầu tiên hoặc bạn có thể làm cho XML ngắn hơn như thế này:
<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>
và chỉ chạy build hai lần (lần đầu tiên). Nếu bạn đã tạo các tệp đã cam kết với kho lưu trữ, sẽ không có vấn đề gì khi xây dựng lại với cả hai ví dụ.
Trong Visual Studio, bạn có thể muốn thấy một cái gì đó như thế này:
thay vì điều này:
Vì vậy, thêm một cái gì đó như thế này vào tập tin dự án của bạn:
<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>
Ví dụ đầy đủ ở đây: GitHub.com/Konard/T4GenericsExample (bao gồm việc tạo nhiều tệp từ mẫu đơn).