首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

PowerShell 實現組建版本號自動遞增腳本

     編輯:關於.NET

在中大型專案的自動化建構流程中,期望每次 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)
}

ver.cs 範本

using System.Reflection;
[assembly: AssemblyVersion("1.0.0.0")]

整合到建構流程

  1. 將腳本儲存為 AutoVersion.ps1。
  2. 在 NAnt、MSBuild 或批次檔建構腳本中,於編譯前呼叫:
powershell -ExecutionPolicy Bypass -File AutoVersion.ps1

每次建構執行時,ver.cs 版本號即自動更新。

改進建議

  • 原腳版本號解析與重組邏輯較脆弱,建議改用 Regex 提取版本四段數字,分別遞增 Revision 或依語意化版本規則遞增。
  • 可擴充支援從 Git Commit 數、日期、分支名稱生成版本資訊。
  • 輸出格式化為標準 Major.Minor.Build.Revision,確保 NuGet、ClickOnce 等工具正確識別。

此腳本展示 PowerShell 在建構自動化中的輕量化應用,團隊可據此客製化專屬版本策略。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved