在中大型專案的自動化建構流程中,期望每次 Build 自動遞增版本號,而非依賴 .NET 預設的 `AssemblyVersion("1.0.*")` 規則。本文提供一個 PowerShell 腳本,讀取並更新 ver.cs 中的版本字串,實現自定義遞增邏輯。
$ver = "ver.cs"
$s = [System.IO.File]::ReadAllLines($ver)
if ($s.Length -eq 2) {
# 解析第二行:[assembly: AssemblyVersion("1.0.0.0")]
$num = $s[1].Remove(0, 28).Remove(7, 3).Split('.')
$sum = [int]$num[0] + [int]$num[1] + [int]$num[2] + [int]$num[3]
$result = $sum -as [Int32]
$r = $result + 1
$results = $r.ToString()
write-host "Current Version: $results"
# 重組版本字串(此處邏輯為將四位數字串重新組合,實際專案建議改為標準 Major.Minor.Build.Revision)
$build = "[assembly: AssemblyVersion("""
+ $results[0] + "." + $results[1] + "." + $results[2] + "." + $results[3] + """)]"
$s = "using System.Reflection;", $build
[System.IO.File]::WriteAllLines($ver, $s)
}
using System.Reflection;
[assembly: AssemblyVersion("1.0.0.0")]
AutoVersion.ps1。powershell -ExecutionPolicy Bypass -File AutoVersion.ps1
每次建構執行時,ver.cs 版本號即自動更新。
Revision 或依語意化版本規則遞增。Major.Minor.Build.Revision,確保 NuGet、ClickOnce 等工具正確識別。此腳本展示 PowerShell 在建構自動化中的輕量化應用,團隊可據此客製化專屬版本策略。