如何创建具有增量构建依存关系的自定义任务?

时间:2019-03-25 17:04:54

标签: msbuild

我有一个构建步骤,可以解析一个csv文件并生成许多.cs文件,并且我试图建立一个构建目标,使我可以增量地/仅在源文件已更改时生成它们。

我已经在TechTreeGenerator.targets中创建了一个目标:

  <Target Name="BuildTechTreeGenerator" BeforeTargets="BeforeBuild" Inputs="@(TechTree)" Outputs="$(ProjectDir)..\Mods\AutoGen\AutoGen.lastbuild">
    <TechTreeGenerator SourceCsv="@(TechTree)" OutputFolder="$(ProjectDir)..\Mods\AutoGen" TemplateFolder="$(ProjectDir)..\TechTreeTemplates">
      <Output TaskParameter="DestinationFiles" ItemName="CompileFiles"/>
    </TechTreeGenerator>

    <ItemGroup>
      <CompileFiles>
        <Link>%(Filename)%(Extension)</Link>
      </CompileFiles>
    </ItemGroup>
    <ItemGroup>
      <Compile Include="@(CompileFiles);" />
    </ItemGroup>
  </Target>

TechTreeGenerator是代码Task,它运行该工具,并输出从csv文件生成的所有文件的列表(即使尚未重新生成)。它还总是输出一个“ AutoGen.lastbuild”文件,与csv文件进行比较,以告知是否需要重建。

但是,目标输出中的lastbuild似乎没有任何影响。删除它不会重建文件。

编辑:我忘了在.csproj中添加我引用它的项目:

  <Import Project="TechTreeGenerator.targets" />
  <ItemGroup>
    <TechTree Include="..\EcoTechTree.csv" />
  </ItemGroup>

1 个答案:

答案 0 :(得分:0)

忘记.lastbuild文件。只需将.csv文件作为输入。并将生成的.cs文件作为项目组作为输出。

app.AddExceptionTranslation<CustomException>(HttpStatusCode.Forbidden, e => e.ToApiErrors());