使用MSBuild,如何为文件的内容设置属性?

使用MSBuild,如何为文件的内容设置属性?,msbuild,Msbuild,我有一个使用PowerShell设置的文件,其中包含我的版本号。我需要在MSBuild中获取它,以便在构建脚本中对其执行操作。这似乎很简单;我只想获取文件的内容并将属性设置为该值 我想也许做一个Exec任务,在我的文件上做一个“更多”的操作,然后捕获标准输出就可以了,但我似乎无法让它工作。其他人似乎也有stdout和MSBuild的问题。以下是我尝试过的: <Exec Command="more $(BuildDirectory)\version.txt" Outputs="stdout"

我有一个使用PowerShell设置的文件,其中包含我的版本号。我需要在MSBuild中获取它,以便在构建脚本中对其执行操作。这似乎很简单;我只想获取文件的内容并将属性设置为该值

我想也许做一个Exec任务,在我的文件上做一个“更多”的操作,然后捕获标准输出就可以了,但我似乎无法让它工作。其他人似乎也有stdout和MSBuild的问题。以下是我尝试过的:

<Exec Command="more $(BuildDirectory)\version.txt" Outputs="stdout">
    <Output TaskParameter="Outputs" ItemName="BuildNumber" />
</Exec>

任务就是你想要的

<ReadLinesFromFile File="Version.Txt">
    <Output TaskParameter="Lines" ItemName="BuildNumber"/>
</ReadLinesFromFile>

也就是说,解决问题的另一种方法是使用MSBuild模式将build num info存储在xml文件中

差不多

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <PropertyGroup>
   <BuildNumber>10</BuildNumber>
   <RevNumber>5</RevNumber>
 </PropertyGroup>
</Project>

10
5.

然后将version.properties文件导入主msbuild文件

谢谢!我就是找不到那个任务。仅供参考,您的第一个代码片段中有一个小错误。它是ItemName而不是Item:然后我可以使用“@(BuildNumber)”.Ack访问输出-现在我需要将列表项(@)更改为属性($)。有什么建议吗?我想我已经找到了:使用
Output
元素中的
PropertyName
属性直接在
ReadLinesFromFile
任务中创建属性。