2016-04-29 41 views
2

我有powershell脚本来替换程序集版本,但我必须在第三个位置更改版本号 LIKE [assembly:AssemblyVersion(“1.0.20.1”)] to [装配:的AssemblyVersion(“1.0.21.1”)如何在PowerShell脚本中替换程序集版本的第三个位置

这就是我,这递增上次位置:

# 
# This script will increment the build number in an AssemblyInfo.cs file 
# 

$assemblyInfoPath = "C:\Users\kondas\Desktop\PowerShell\AssemblyInfo.cs" 

$contents = [System.IO.File]::ReadAllText($assemblyInfoPath) 

$versionString = [RegEx]::Match($contents,"(AssemblyFileVersion\("")(?:\d+\.\d+\.\d+\.\d+)(""\))") 
Write-Host ("AssemblyFileVersion: " +$versionString) 

#Parse out the current build number from the AssemblyFileVersion 
$currentBuild = [RegEx]::Match($versionString,"(\.)(\d+)(""\))").Groups[2] 
Write-Host ("Current Build: " + $currentBuild.Value) 

#Increment the build number 
$newBuild= [int]$currentBuild.Value + 1 
Write-Host ("New Build: " + $newBuild) 

#update AssemblyFileVersion and AssemblyVersion, then write to file 


Write-Host ("Setting version in assembly info file ") 
$contents = [RegEx]::Replace($contents, "(AssemblyVersion\(""\d+\.\d+\.\d+\.)(?:\d+)(""\))", ("`${1}" + $newBuild.ToString() + "`${2}")) 
$contents = [RegEx]::Replace($contents, "(AssemblyFileVersion\(""\d+\.\d+\.\d+\.)(?:\d+)(""\))", ("`${1}" + $newBuild.ToString() + "`${2}")) 
[System.IO.File]::WriteAllText($assemblyInfoPath, $contents) 

回答

1

我会亲自做一个对象并将其值的各部分,那么你可以增加你想要的任何部分,并在稍后将其重新构造成字符串。

$Version = $contents | ?{$_ -match 'AssemblyVersion\("(\d+)\.(\d+)\.\(d+)\.(\d+)"\)'}|%{ 
    [PSCustomObject]@{ 
     [int]'First'=$Matches[1] 
     [int]'Second'=$Matches[2] 
     [int]'Third'=$Matches[3] 
     [int]'Fourth'=$Matches[4] 
    } 
} 

然后你就可以增加简单,如$Version.Third++增加了第三局。然后,只需使用一个格式化字符串吐出背出:

'AssemblyVersion("{0}.{1}.{2}.{3}")' -f $Version.First, $Version.Second, $Version.Third, $Version.Fourth 

这将产生AssemblyVersion("1.0.21.1")就像你想要的。

相关问题