2

MSBuildコミュニティタスクを使用して、OutputPathの最後からスラッシュを削除しようとしています

これは私がこれまでに持っているものです。

<RegexReplace Input="$(OutputPath)" Expression="\$" Replacement="" Count="1">
 <Output ItemName="FormattedOutputPath" TaskParameter="Output" />
</RegexReplace>
<Message Text="@(FormattedOutputPath)"/>

残念ながら、メッセージは最後にスラッシュを付けたまま私のパスを返すだけです。パスはC:\MyDirectory\です。

私の表現が間違っているようです

誰か助けてもらえますか?

4

1 に答える 1

3

スラッシュはエスケープ文字として使用されているため、パターンでは、スラッシュ文字を別のスラッシュでエスケープする必要があります。

<RegexReplace Input="$(OutputPath)" Expression="\\$" Replacement="" Count="1">
  <Output ItemName="FormattedOutputPath" TaskParameter="Output" />
</RegexReplace>
<Message Text="@(FormattedOutputPath)"/>

エスケープをよりよく理解するには、次の例を参照してください。

  1. $行/文字列の終わりを表します
  2. \$ドル記号の文字を表します
  3. \\スラッシュ文字を表します
  4. \\$行/文字列の末尾のスラッシュ文字を表します
于 2012-06-28T23:12:29.907 に答える