タイトルと説明文に若干のズレがあります。この「回答」を編集として投稿したかったのですが、十分な評判ポイントがありません:)ファイルの最後の改行に問題がありますか、それともその改行を無視することに問題がありますか? 明確にしていただけますか?
改行が続くことを無視できると思う方法の1つです。
この小さなコード スニペットは、ビルド番号をファイルに書き込み、それを読み取り、読み取った番号を 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 タスクで、末尾に改行があるファイルから数値のみを含む 1 行を読み取ろうとしても、問題はありません。
補足として:手元にある小さな情報で、それBuildNumber
は. 対処するビルド番号が 1 つしかない場合は、オプションだった可能性があります。しかし、繰り返しになりますが、私は MSBuild をあまり長くいじっていません。そのため、 vsの問題に関するフィードバックをお待ちしています。Item
ItemGroup
Property
Item
Property