如何获得T4模板以在每次构建时生成其输出?就像现在一样,它只在我对模板进行更改时才重新生成它.
我发现了类似的其他问题:
如何在Visual Studio中构建t4文件?(答案不够详细[虽然仍然很复杂]甚至没有完全意义)
必须有一个更简单的方法来做到这一点!
我最近将测试项目迁移到.NET Core 2.0.该测试项目使用文本模板生成一些重复的代码.之前的项目有一个构建目标,可以在构建之前生成所有T4模板.因此,生成的代码也不会签入VCS.
我在项目中使用了这个片段来确保构建模板:
<PropertyGroup>
  <!-- Default VisualStudioVersion to 15 (VS2017) -->
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
  <!-- Determinate VSToolsPath -->
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  <!-- Run T4 generation if there are outdated files -->
  <TransformOnBuild>True</TransformOnBuild>
  <TransformOutOfDateOnly>True</TransformOutOfDateOnly>
</PropertyGroup>
<!-- Import TextTemplating target -->
<Import Project="$(VSToolsPath)\TextTemplating\Microsoft.TextTemplating.targets" />
我的第一个方法是保留这个片段并将其复制到新的.NET Core项目文件中.
在Visual Studio中,这很有效,因为显然,VSToolsPath设置正确.但是,当我运行.NET Core SDK工具时dotnet test(例如我在构建服务器上),VSToolsPath映射到Program Files\dotnet\sdk\2.0.3那里,无法找到文本模板目标.
因为这不起作用,我也尝试简单地Microsoft.VisualStudio.TextTemplating从Nuget 安装包,但这有两个问题: