Есть ли задача MSBuild, которая будет записывать строки в начало * файла?

Я использую WriteLinesToFile для обновления файла журнала изменений (txt). Добавляет текст в конец файла. В идеале я хотел бы иметь возможность записывать изменения в начало этого файла.

Есть ли простая задача (например, в сообществе или пакетах расширений), которая делает это?


person dommer    schedule 03.09.2010    source источник
comment
Аналогично stackoverflow.com/questions/21491914/, у которой также есть хороший ответ.   -  person Jack Miller    schedule 06.06.2018


Ответы (1)


Я не видел ничего подобного в пользовательском пакете задач.

Вы можете обмануть, используя ReadLinesFromFile и WriteLinesToFile :

<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>

Или вы можете создать пользовательскую задачу.

person Julien Hoarau    schedule 03.09.2010
comment
Есть ли способ остановить удаление пустых строк (между записями журнала)? - person dommer; 03.09.2010
comment
Добавьте условие в WriteLinesToFile --› Condition=@(Log) != '' And (@(Log) != '\r\n' Or @(Log) != '\n') - person Julien Hoarau; 03.09.2010
comment
Вчера я укусил пулю и написал пользовательскую задачу, но я мог бы вернуться к этому, так как мне не нравится поддерживать что-то, если в этом нет крайней необходимости. Спасибо. - person dommer; 05.09.2010
comment
@dommer: Если вы делаете много экзотических вещей в этом направлении, я бы посоветовал рассмотреть встроенную задачу powershell или psake. - person Ruben Bartelink; 10.09.2010