使用共享的 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。
Copyright © 2012. Huan-Lin 學習筆記 - All Rights Reserved
Powered by Blogger
Template Design by Cool Blogger Tutorials
Published by Templates Doctor