T4在构建时生成文件

时间:2014-10-26 19:42:15

标签: msbuild t4

我在构建时使用T4转换有困难(使用MsBuild)。

我试图将生成的文件放到解决方案/项目中。如果我只保存或运行自定义工具,则会生成文件,并自动添加到解决方案中。

这些文件也是在构建时生成的,但不会添加到解决方案中#34;开箱即用"。我不确定,这是我的错,还是默认行为。

我也无法为模板生成文件名。

我能够在构建输出中看到生成的文件,但是将它们作为参数传递给.tt文件是不成功的。

这里是.csproj的样子:

  <Import Project="$(VSToolsPath)\TextTemplating\Microsoft.TextTemplating.targets" />
  <PropertyGroup>
    <TransformOnBuild>true</TransformOnBuild>
    <OverwriteReadOnlyOutputFiles>true</OverwriteReadOnlyOutputFiles>
    <TransformOutOfDateOnly>false</TransformOutOfDateOnly>
    <AfterTransform>OnAfterTransform</AfterTransform>
  </PropertyGroup>

  <Target Name="OnAfterTransform">
    <Message Text="@(GeneratedFiles)" Importance="high" />
    <ItemGroup>
      <T4ParameterValues Include="Generated">
        <Value>@(GeneratedFiles)</Value>
        <Visible>false</Visible>
      </T4ParameterValues>
    </ItemGroup>
  </Target>

并构建输出:

  • 1&gt; ------构建开始:项目:DTE_transform_T4_on_build,配置:调试任何CPU ------
  • 1&GT;转换模板TransformMe.tt ...
  • 1&GT;转换模板AnotherOneForTest.tt ...
  • 1&GT; C:\ Users \ Me \ Documents \ Visual Studio 2013 \ Projects \ Transform_T4_on_build \ Transform_T4_on_build \ TransformMe.generated.cs; C:\ Users \ Me \ Documents \ Visual Studio 2013 \ Projects \ Transform_T4_on_build \ Transform_T4_on_build \ AnotherOneForTest.txt
  • 1&GT; Transform_T4_on_build - &gt; C:\ Users \ Me \ Documents \ Visual Studio 2013 \ Projects \ Transform_T4_on_build \ Transform_T4_on_build \ bin \ Debug \ Transform_T4_on_build.exe

      

    ==========构建:1成功,0失败,0最新,0跳过==========

  •   
  GeneratedFiles在这里可见,但在.tt中,如果我尝试其中任何一个:

<#@ parameter type="System.Collections.Generic.List<string>" name="Generated" #>
<#@ parameter type="System.String" name="Generated" #>
<#@ parameter type="System.String" name="GeneratedFiles" #>

...我无法将这些文件名转换为.tt文件。我真的不知道我应该为参数使用什么类型。从Oleg's page和其他人,我无法真正说出参数的类型。我也没有通过谷歌搜索找到相关的例子。

另一方面,我可以轻松传递ProjectFolder,例如:

  <ItemGroup>
    <T4ParameterValues Include="ProjectFolder">
      <Value>$(ProjectDir)</Value>
      <Visible>false</Visible>
    </T4ParameterValues>
  </ItemGroup>

并使用:

消费它
<#@ parameter type="System.String" name="ProjectFolder" #>
<。>在.tt文件中。

所以,我的问题是:

  • 我需要做什么,将生成的文件放入解决方案中 转变构建
  • 如何将生成的文件传递到构建
  • 上的.tt

0 个答案:

没有答案