F# 项目中的 T4 模板

问题描述 投票:0回答:1

我一直在 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# 中,这一切都会自动发生),但我不知道:

    是否可以。
  • 如何做。
请帮忙。

visual-studio f# t4
1个回答
0
投票
也许你可以尝试这样的事情:

<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# 文件应包含在编译中。

© www.soinside.com 2019 - 2024. All rights reserved.