标题和描述之间有轻微的脱节。我本来希望将此“答案”作为编辑发布,但没有足够的声誉点:) 您是否对文件末尾的换行符有问题,或者您是否有忽略该换行符的问题?你能澄清一下吗?
我认为您可以忽略该换行符的一种方式如下。
这段代码将构建号写入文件,然后将其读出,然后将读取的数字加 1。
<Target Name="Messing_around">
<PropertyGroup>
<StartBuildNumber>1</StartBuildNumber>
</PropertyGroup>
<ItemGroup>
<AlsoStartBuildNumber Include="1"/>
</ItemGroup>
<!-- Use a property
<WriteLinesToFile File="$(ProjectDir)test.txt" Lines="$(StartBuildNumber)" Overwrite="true"/>
-->
<WriteLinesToFile File="$(ProjectDir)test.txt" Lines="@(AlsoStartBuildNumber)" Overwrite="true"/>
<ReadLinesFromFile File="$(ProjectDir)test.txt">
<Output
TaskParameter="Lines"
ItemName="BuildNumberInFile"/>
</ReadLinesFromFile>
<PropertyGroup>
<OldBuildNumber>@(BuildNumberInFile)</OldBuildNumber>
<NewBuildNumber>$([MSBuild]::Add($(OldBuildNumber), 1))</NewBuildNumber>
</PropertyGroup>
<Message Importance="high" Text="Stored build number: @(BuildNumberInFile)"/>
<Message Importance="high" Text="New build number: $(NewBuildNumber)"/>
</Target>
这就是我所看到的
Output:
1>Build started xx/xx/xxxx xx:xx:xx.
1>Messing_around:
1> Stored build number: 1
1> New build number: 2
1>
1>Build succeeded.
如果您尝试在 MSBuild 任务中读取仅包含来自带有尾随换行符的文件中的数字的单行,那么您应该没有问题。
作为旁注:由于手头的信息很少,我假设这BuildNumber
是Item
一个ItemGroup
. 如果您只有一个内部版本号要处理,也许Property
可能是一种选择。但话又说回来,我已经很久没有修补 MSBuild 了。因此,我愿意接受有关Item
vsProperty
问题的反馈。