標題和描述之間有輕微的分離。我希望發佈這個「答案」作爲編輯,但沒有enough reputation points :) 你在文件末尾換行符有問題,或者你有忽略該換行符的問題嗎?你能澄清一下嗎?
一種方式,我想你可以忽略這個換行符如下。
的該小代碼段寫了一個版本號的文件,然後讀取出來,然後遞增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
與Property
問題。
我很抱歉沒有很清楚我的問題,並沒有發佈我的完整問題,但它遲到了,我無法再編輯它了。然而,我遇到的問題是我在'Property'中使用了一個非常簡單的命令來讀取文件'$([System.IO.File] :: ReadAllText(「$(TextFile)」))的內容'我真的想使用這個,但它也包括WriteLinesToFiles的換行。我最終使用類似的解決方案,像你的使用ReadLinesFromFile。 – IlirB 2013-02-26 15:01:17