MSBUILD - 从变量中删除一个字符而不知道它的位置

时间:2016-11-08 22:15:33

标签: msbuild

我从我的TFS团队构建中读取了一个内部版本号,它看起来像“AB-1.2.3.4-CDE-REV.1”。我想编辑这个数字并删除最后一个小数点,使其看起来像“AB-1.2.3.4-CDE-REV1”。

2 个答案:

答案 0 :(得分:0)

通常,当您想在msbuild中操作字符串时,您希望使用Property Functions。在您阅读的文档中,您可以使用字符串函数,因此接下来要确定您需要哪些System.String方法。在这种情况下:LastIndexOf和Remove应该可以解决问题:

<!-- BuildNumber property is fetched elsewhere -->
<PropertyGroup>
  <BuildNumber>AB-1.2.3.4-CDE-REV.1</BuildNumber>
</BuildNumber>

<Target Name="ManipulateBuildNumber">
  <PropertyGroup>
    <BuildNumber>$(BuildNumber.Remove($(BuildNumber.LastIndexOf('.')),1))</BuildNumber>
  </PropertyGroup>
  <Message Text="New build number is $(BuildNumber)" />
</Target>

答案 1 :(得分:0)

感谢解决方案的坚持。有用。我已经想出了另一种蹩脚而粗暴的做法。

<BuildNumber>AB-1.2.3.4-CDE-REV.1</BuildNumber>
<Part1>$(BuildNumber.Split('.')[0])</Part1>
<Part2>$(BuildNumber.Split('.')[1])</Part2>
<Part3>$(BuildNumber.Split('.')[2])</Part3>
<Part4>$(BuildNumber.Split('.')[3])</Part4>
<Part5>$(BuildNumber.Split('.')[4])</Part5>
<BuildNumber>$(Part1).$(Part2).$(Part3).$(Part4)$(Part5)</BuildNumber>