如何在msbuild中提取多行到变量

时间:2014-03-19 05:13:31

标签: msbuild msbuild-task

我发现了以下帖子 MSBuild ReadLinesFromFile all text on one line

由此我无法弄清楚如何做到以下几点。

如果我想使用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 个答案:

答案 0 :(得分: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>