0

以下两个内联 yaml-pipeline powershell 脚本:

- pwsh: (get-content -path $(versionHeader)) | foreach-object {$_ -replace "2.0.0.0", '$(major).$(minor).$(patch).0'} | set-content -path $(versionHeader)
  displayName: 'Update build number in header file'

- pwsh: (get-content -path $(versionHeader)) | foreach-object {$_ -replace "20200101000000", (get-date -f 'yyyyMMddhhmmss')} | set-content -path $(versionHeader)
  displayName: 'Update date in header file'

旨在采取这两条线

[assembly: MyApp.Net.Attributes.AssemblyVersion("2.0.0.0")]                                   
[assembly: MyApp.Net.Attributes.BuildDateAttribute("20200101000000")]

并将它们变成这两行(即在引号中加上新值)

[assembly: MyApp.Net.Attributes.AssemblyVersion("2.0.185.0")] 
[assembly: MyApp.Net.Attributes.BuildDateAttribute("20200724013502")]

(重置价值不同)

任何一个脚本本身都可以正常工作。但是当我一个接一个地尝试使用这两个脚本时,第二个值就搞砸了。

[assembly: MyApp.Net.Attributes.AssemblyVersion("2.0.209.0")]                                // correct
[assembly: MyApp.Net.Attributes.BuildDateAttribute("202.0.209.000000")] // ?????

显然他们以某种方式相互干扰,但我不知道如何。有人可以告诉我我做错了什么吗?

4

1 回答 1

1

问题出在powershell中-replace-它解释通配符,并且恰好20200101000000匹配2.0.0.0

PS> "20200101000000" -replace "2.0.0.0", "zzzzzz"
20zzzzzz00000
于 2020-12-15T06:12:54.887 回答