4

WriteLinesToFile を使用してテキスト ファイルに数値を書き込みたいのですが、タスクの最後に改行があり、他の場所で読み取りまたは結合するときに問題が発生します

例:

<WriteLinesToFile File="$(TextFile)" Lines="@(BuildNumber)" Overwrite="true"/>

以下のユーザーコメントとして更新

Property私が抱えていた問題は、ファイルの内容を読み取るために で非常に単純なコマンドを使用していたことで、$([System.IO.File]::ReadAllText("$(TextFile)"))本当にこれを使用したいのですが、 からの改行も含まれていましたWriteLinesToFiles。を使用して、あなたのような同様のソリューションを使用することになりましたReadLinesFromFile

4

1 に答える 1

3

タイトルと説明文に若干のズレがあります。この「回答」を編集として投稿したかったのですが、十分な評判ポイントがありません:)ファイルの最後の改行に問題がありますか、それともその改行を無視することに問題がありますか? 明確にしていただけますか?

改行が続くことを無視できると思う方法の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の問題に関するフィードバックをお待ちしています。ItemItemGroupPropertyItemProperty

于 2013-02-22T20:26:52.307 に答える