C#釋出版本的控制管理
阿新 • • 發佈:2019-01-28
常見的版本控制,是在AssemblyInfo裡面對AssemblyVersion和AssemblyFileVersion的Atrribute這些屬性進行值設定。
版本遞增和自定義版本的方式居多。
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.6")]
[assembly: AssemblyFileVersion("1.0.0.6")]
但是業務要求有時一天釋出N個版本,因為對四個位的定義不同,決定了目前這個版本號在實際過程中大概率作廢。
雲端存在兩種服務版本 一種格式為1.0.0.* ,另一種為40,即會存在1.0.0.6,40和1.0.0.6,41的版本情況。
在參考下面的連結之後
https://www.cnblogs.com/liqingwen/p/5944391.html
決定使用Assmbly集中的AssemblyInformationalVersion屬性
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.6")]
[assembly: AssemblyFileVersion("1.0.0.6")]
[assembly:AssemblyInformationalVersion("40")]
在生成的exe屬性-詳細資訊中,產品版本值為40,檔案版本值為1.0.0.6,
那是不是意味著AssemblyFileVersion這個屬性值的值被AssemblyInformationaVersion給覆蓋了呢?
通過查證
var fileVersion = Attribute.GetCustomAttribute(System.Reflection.Assembly.GetEntryAssembly(), typeof(System.Reflection.AssemblyFileVersionAttribute)); var informationVersion = Attribute.GetCustomAttribute(System.Reflection.Assembly.GetEntryAssembly(), typeof(System.Reflection.AssemblyInformationalVersionAttribute)) as System.Reflection.AssemblyInformationalVersionAttribute;
fileVersion值依然為1.0.0.6,informationVersion為40,說明在exe屬性呈現時,AssemblyInformationaVersion屬性的優先順序要高於AssemblyFileVersion,但是不會相互覆蓋,那麼就愉快的解決了這次的業務需求了。
Ps:在用FileVersionInfo類跨目錄讀取檔案時,讀取到的資訊有兩個屬性都變為了40,ProductMajorPart 與ProductVersion。這裡暫不做深究,留待下次繼續學習。
在使用Assembly之前,也考慮了xml和config的做法,走了一些小彎路,希望各位有處理經驗的大佬給點心得意見~