从MSBuild中的文件中读取单个值

时间:2012-10-08 16:19:40

标签: msbuild version

我正在尝试从MSBuild中的文件中读取版本号:

<ItemGroup>
    <VersionFile Include="Properties\VERSION" />
</ItemGroup>
<Target Name="BeforeBuild">
    <ReadLinesFromFile File="@(VersionFile)">
        <Output TaskParameter="Lines" ItemName="VersionNumber" />
    </ReadLinesFromFile>
</Target>

我只需要这个文件的第一行。如何将该值与WriteLinesToFile中的另一个字符串连接起来?这不起作用:

<WriteLinesToFile
    File="$(AssemblyVersionFile)"
    Lines="[assembly: AssemblyVersion(&quot;@(VersionNumber)&quot;)]" />

我收到错误:

  

错误MSB4012:表达式“[assembly:AssemblyVersion(”@(VersionNumber)“)]”不能在此上下文中使用。项目列表不能与期望项目列表的其他字符串连接。使用分号分隔多个项目列表。

1 个答案:

答案 0 :(得分:7)

我对MSBuild不太熟悉,但将Output ReadLinesFromFile更改为属性,并使用$WriteLinesToFile中访问它似乎有效:

<Target Name="BeforeBuild">
    <ReadLinesFromFile File="@(VersionFile)">
        <Output TaskParameter="Lines" PropertyName="VersionNumber" />
    </ReadLinesFromFile>
    <WriteLinesToFile
        File="output.txt"
        Lines="[assembly: AssemblyVersion(&quot;$(VersionNumber)&quot;)]" />
</Target>