是否有一个MSBuild任务可以将行写入文件的*开头*?

5

我正在使用WriteLinesToFile来更新一个变更日志文件(txt)。它将文本附加到文件末尾。理想情况下,我希望能够将更改写入此文件的开头

是否有一个简单的任务(例如在Community或Extension包中)可以实现这一点?


类似于 https://dev59.com/SHvaa4cB1Zd3GeqPKP7C#21500030,该链接也有一个不错的答案。 - Jack Miller
1个回答

14

在自定义任务包中,我没有看到过这样的东西。

您可以通过使用ReadLinesFromFileWriteLinesToFile 来进行欺骗:

<PropertyGroup>
  <LogFile>log.txt</LogFile>
</PropertyGroup>

<ItemGroup>
  <Log Include="Line1"/>
  <Log Include="Line2"/>
</ItemGroup>

<Target Name="WriteFromStart">
  <ReadLinesFromFile File="$(LogFile)" Condition="Exists('$(LogFile)')">
    <Output TaskParameter="Lines" ItemName="Log"/>
  </ReadLinesFromFile>

  <WriteLinesToFile File="$(LogFile)" 
                    Lines="@(Log)" 
                    Condition="@(Log) != '' And (@(Log) != '\r\n' Or @(Log) != '\n')"
                    Overwrite="true">
  </WriteLinesToFile>
</Target>

或者您可以创建自定义任务。


有没有办法阻止它剥去(日志条目之间的)空白行? - dommer
2
为WriteLinesToFile添加一个条件 --> Condition="@(Log) != '' And (@(Log) != '\r\n' Or @(Log) != '\n')" - Julien Hoarau
昨天我硬着头皮写了一个自定义任务,但是我可能会回到之前的方法,因为我不喜欢维护除非绝对必要。谢谢。 - dommer
如果你要在这个方向上做很多奇特的事情,我建议考虑使用PowerShell内联任务或psake。 - Ruben Bartelink

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接