我得到了一个文本文件,其版本号在每个版本上都有更新,即:1.4.10.301。
我想在每行构建中将此编号插入到此行上的globalassemblyinfo.cs文件中:[assembly:AssemblyVersion(" 1.4.10.300")]并且仅限于版本号,意思是之前的使用文本文件(1.4.10.301)中的新版本号更新globalassembly.cs文件的构建。
试过这个:
$a = cat "C:\pathtofile\GlobalAssemblyInfo.cs" | select-string AssemblyVersion
这只给我这一行:
[assembly: AssemblyVersion("1.4.10.331")]
但是从中我只需要数字我怎么能把它拉出来?尝试使用模式,但我不知道该模式准确放入什么
下面的代码就像一个魅力,我设法提取版本号,现在我试图用globalassemblyinfo.cs中的版本替换这个版本,所以我写了这一行:
$a -replace $version,$Newversion | Set-Content "C:\pathtofile\GlobalAssemblyInfo.cs"
但它删除了整个文件内容并改为使用此字符串:
[assembly: AssemblyVersion("1.4.10.400")]
如何在不删除整个文件内容的情况下更新该行?
答案 0 :(得分:1)
获得包含AssemblyVersion
属性的行后,您可以使用named capture group获取版本字段,如下所示:
if($a -match '(?<version>(\d+\.?){4})'){
$version = $Matches["version"]
}
实际模式:(\d+\.?){4}
匹配四个连续出现的一个或多个数字和一个可选点 - (?<version>)
部分确保将其捕获到$Matches["version"]
答案 1 :(得分:0)
找到答案,显然你必须使用带括号的Get-Content命令,如下所示:
(Get-Content "C:\pathtofile\GlobalAssemblyInfo.cs") -replace $version,$Newversion | Set-Content "C:\pathtofile\GlobalAssemblyInfo.cs"