Merci à GitHub.com/Mono/T4 , pour le moment, vous pouvez le faire pour les versions .NET Core et Visual Studio en ajoutant ceci à votre .csproj
fichier:
<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>
Si vous transformez vos modèles en différents langages de programmation, vous devez ajouter quelque chose comme <Compile Remove="**\*.vb" />
et <Compile Include="**\*.vb" />
pour que ces fichiers soient compilés même si vous n'avez pas encore généré de fichiers.
Remove
et Include
astuce uniquement nécessaire pour la première génération, ou vous pouvez raccourcir le XML comme ceci:
<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>
et exécutez simplement build deux fois (pour la première fois). Si vous avez déjà généré des fichiers validés dans le référentiel, il n'y aura aucun problème lors des reconstructions avec les deux exemples.
Dans Visual Studio, vous souhaiterez peut-être voir quelque chose comme ceci:
au lieu de cela:
Ajoutez donc quelque chose comme ceci à votre fichier de projet:
<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>
Exemple complet ici: GitHub.com/Konard/T4GenericsExample (inclut la génération de plusieurs fichiers à partir d'un seul modèle).