使用共享的 AssemblyInfo 讓多個 .NET 專案的版本保持一致

如果你希望某個 solution 包含的全部專案都建置成同一個版本編號,可依下列步驟進行:

  1. 編輯一個共用的組件資訊檔(Assembly Information File),命名為 SharedAssemblyInfo.cs(假設這是個 C# 專案)。此檔案的內容只包含版本資訊,例如:

    using System.Reflection;
    using System.Runtime.CompilerServices;
    using System.Runtime.InteropServices;

    [assembly: AssemblyVersion("1.8.3122.0")]
    [assembly: AssemblyFileVersion("1.8.3122.0")]

  2. 將此 SharedAssemblyInfo.cs 以 Add As Link 的方式加入 solution 中的各個專案。作法為:在 Solution Explorer 中的某個專案名稱上點右鍵 > Add > Existing Item...,在新開對話窗中選取 SharedAssemblyInfo.cs,然後,不要直接點 Add 鈕,而是點 Add 鈕旁邊的向下箭頭,此時會出現 Add As Link 選項,點它。每個專案都如法泡製。這個新加入的項目預設會放在專案的根資料夾下(只是個連結設定,根目錄沒有實體檔案),你也可以用滑鼠拖曳的方式,在 Solution Explorer 中將它移動到專案的 Properties 資料夾,和預設的 AssemblyInfo.cs 放在一起。
  3. 開啟每個專案原本已經存在的 AssemblyInfo.cs,將原有的 AssemblyVersion 和 AssemblyFileVersion attributes 刪除(若不刪除,編譯時會發生重複 attribute 的錯誤)。
以後要發行產品時,只要修改 SharedAssemblyInfo.cs 裡面的版本資訊,然後 rebuild 整個 solution 就行了。

這是在不使用額外工具的情況下,還算簡單的解法(至少比每次發行產品之前逐一修改各專案的 AssemblyInfo 要方便迅速多了)。如果你需要對 AssemblyInfo 的內容做更複雜的控制,可以試試 MSBuild Community Tasks 裡面的 AssemblyInfo task。
使用共享的 AssemblyInfo 讓多個 .NET 專案的版本保持一致 使用共享的 AssemblyInfo 讓多個 .NET 專案的版本保持一致 Reviewed by Michael Tsai on 6/14/2009 Rating: 5
技術提供:Blogger.