Dank GitHub.com/Mono/T4 können Sie dies derzeit sowohl für .NET Core- als auch für Visual Studio-Builds tun, indem Sie Folgendes zu Ihrer .csproj
Datei hinzufügen :
<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>
Wenn Sie Ihre Vorlagen in verschiedene Programmiersprachen umwandeln, sollten Sie so etwas wie <Compile Remove="**\*.vb" />
und hinzufügen <Compile Include="**\*.vb" />
, um diese Dateien zu kompilieren, auch wenn Sie noch keine Dateien generiert haben.
Remove
und Include
Trick nur für die erste Generierung benötigt, oder Sie können das XML-kürzer wie folgt machen:
<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>
und führen Sie build einfach zweimal aus (zum ersten Mal). Wenn Sie bereits Dateien generiert haben, die für das Repository festgeschrieben wurden, treten bei Neuerstellungen mit beiden Beispielen keine Probleme auf.
In Visual Studio möchten Sie möglicherweise Folgendes sehen:
an Stelle von:
Fügen Sie Ihrer Projektdatei also Folgendes hinzu:
<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>
Vollständiges Beispiel hier: GitHub.com/Konard/T4GenericsExample (beinhaltet die Generierung mehrerer Dateien aus einer einzigen Vorlage).