【发布时间】:2016-11-22 05:05:27
【问题描述】:
我正在使用 teamcity 和一个 C# 项目,我想使用文件内容修补程序来替换程序集版本中的最后两位数字(例如:[assembly: AssemblyVersion("1.0.*.*")] 中的两个星号)。我在文件内容修补程序上找到了文档,如果您只想更改最后一个数字,它建议使用
(^\s*\[\s*assembly\s*:\s*((System\s*\.)?\s*Reflection\s*\.)?\s*AssemblyVersion(Attribute)?\s*\(\s*@?\")(([0-9\*]+\.)+)[0-9\*]+(\"\s*\)\s*\]),这让我走到了那里。
我想如果我这样做 (^\s*\[\s*assembly\s*:\s*((System\s*\.)?\s*Reflection\s*\.)?\s*AssemblyVersion(Attribute)?\s*\(\s*@?\")(([0-9\*]+(\.))+)[0-9\*]+(\"\s*\)\s*\]) 它将捕获最后一个周期作为它自己的组,让我可以毫无问题地替换两颗星。但是,看起来第一颗星仍然在 1.0 组中被捕获(因此组变为 1.0.*.)。
我想要的是限制第一组捕获 {major}.{minor}。然后有最后一个时期是它自己的小组,所以我可以做类似的事情:$1$5\%build.number%$7%build.vcs.number%$8 这会给我AssemblyVersion("1.0.{build#}.{vcs#}")]
一般来说,我可以在没有太多问题的情况下偶然发现正则表达式,但过去几个小时我一直在努力解决这个问题,但我似乎无法让它正确。他将不胜感激任何有关得出此结论的信息。
【问题讨论】:
-
尝试
(^\s*\[\s*assembly\s*:\s*((System\s*\.)?\s*Reflection\s*\.)?\s*AssemblyVersion(Attribute)?\s*\(\s*@?\")([0-9\*]+\.[0-9\*]+)\.([0-9\*]+\.[0-9\*]+)(\"\s*\)\s*\])并替换为$1$5.%build.number%.%build.vcs.number%$7。 -
@WiktorStribiżew 谢谢!这很好用。我很感激答案!如果您将此作为实际答案,我会接受。
-
我已经添加了答案。