Как извлечь несколько строк в переменные в msbuild

Я наткнулся на следующий пост MSBuild ReadLinesFromFile весь текст в одну строку

Из этого я не смог понять, как сделать следующее.

Что мне делать, если я хочу ReadAllLines, но хочу сохранить каждую строку в отдельной переменной без точки с запятой?

<ReadLinesFromFile File="@(File)">
    <Output TaskParameter="Lines" ItemName="FileContents" />
</ReadLinesFromFile>
<Line1>"What should I do here?" </Line1>
<Line2>"What should I do here?" </Line2>

1 ответ

Решение

Считайте содержимое в свойство, затем разделите это свойство и получите из него элемент. Это, конечно, требует, чтобы вы заранее знали, что в файле будет (как минимум) столько строк, сколько у вас есть свойств.

<Target Name="ReadFile">
  <ReadLinesFromFile File="$(MyInputFile)">
    <Output TaskParameter="Lines" PropertyName="FileContents"/>
  </ReadLinesFromFile>
</Target>

<Target Name="CreateProperties" DependsOnTargets="ReadFile">
  <PropertyGroup>
    <Line0>$([System.String]::Copy( $(FileContents) ).Split( ';' )[ 0 ])</Line0>
    <Line1>$([System.String]::Copy( $(FileContents) ).Split( ';' )[ 1 ])</Line1>
  </PropertyGroup>
</Target>
Другие вопросы по тегам