【问题标题】:Is there an MSBuild task that will write lines to the *start* of a file?是否有一个 MSBuild 任务会将行写入文件的 *start*?
【发布时间】:2010-09-03 10:27:24
【问题描述】:

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

是否有执行此操作的简单任务(例如在社区或扩展包中)?

【问题讨论】:

标签: msbuild msbuild-task


【解决方案1】:

我在自定义任务包中没有看到类似的东西。

您可以使用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>

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

【讨论】:

  • 有没有办法阻止它剥离空行(在日志条目之间)?
  • 向 WriteLinesToFile 添加条件 --> Condition="@(Log) != '' And (@(Log) != '\r\n' 或 @(Log) != '\ n')"
  • 我昨天硬着头皮写了一个自定义任务,但我可能会回到这个,因为除非绝对必要,否则我不喜欢维护东西。谢谢。
  • @dommer:如果你在这个方向上做了很多奇特的事情,我建议考虑一个 powershell 内联任务或 psake
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
相关资源
最近更新 更多