我一直在 Visual Studio 的 C# 项目中使用 T4 模板。现在我正在尝试使用 mono t4 在 F# 项目中进行一些生成。
我尝试改编我找到的示例(例如 .Net Core 项目中的 TextTemplate 目标),但我没有成功,如“没有生成任何内容”。
这是项目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net4.8</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>
<None Include="Template.tt" />
<Compile Include="**.fs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Mono.TextTemplating" Version="2.3.1" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="FSharp.Core" Version="7.0.200" />
</ItemGroup>
</Project>
应该可以(我希望)在 .fsproj 文件中手动添加一些条目,以强制 msbuild 运行 .tt 文件的转换(在 C# 中,这一切都会自动发生),但我不知道:
<Project Sdk="Microsoft.NET.Sdk">
<!-- ... other configuration ... -->
<Target Name="TransformTemplates" BeforeTargets="BeforeBuild">
<Exec Command="t4 -o $(IntermediateOutputPath)\GeneratedFile.cs Template.tt" />
</Target>
<ItemGroup>
<Compile Include="$(IntermediateOutputPath)\GeneratedFile.cs" />
</ItemGroup>
</Project>
TransformTemplates 是在构建之前运行的自定义目标Exec 任务运行 t4 命令将 Template.tt 转换为 C# 文件。
生成的 C# 文件应包含在编译中。