我有一个构建步骤,可以解析一个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>
答案 0 :(得分:0)
忘记.lastbuild文件。只需将.csv文件作为输入。并将生成的.cs文件作为项目组作为输出。
app.AddExceptionTranslation<CustomException>(HttpStatusCode.Forbidden, e => e.ToApiErrors());