Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 為現任微軟最有價值專家 (MVP)、微軟認證講師 (MCT) 、Blogger、Youtuber:記錄軟體開發的點點滴滴 著重於微軟技術、C#、ASP .NET、Azure、DevOps、Docker、AI、Chatbot、Data Science

[從.Net工程師的角度來看DevOps][27]如何看.Net Dll版號和如何給.Net的Dll打上版號

image
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 和 https://blog.xebialabs.com/2016/03/21/essential-devops-terms/

在上一篇([26]Package階段介紹)介紹完了Package階段主要做的兩個事情:打包的格式,以及用來區分差異的版號 (version)

在接下來的幾篇將會介紹和版號有關的內容。

這篇會從最基本的開始,在.Net裡面是如為某一個library產生出來的dll打上版號?如何看到這個版號的資訊呢?

有寫過的相關文章

一張表看懂dll版號的值和設定版號方式 - TL;DR
Assembly VersionFile VersionProduct Version
作用.Net Runtime對應
dll版本的時候看這個值
區別build出來的dll和上一個版本的差異。一般build資訊會放在這邊。產品的角度這個dll的版本
用nuget exe產生nuget的時候,會用這個作為nuget的版號
確認dll的版號值使用powershell:
[System.Reflection
.Assembly]
::LoadFrom("d:\xxx.dll")
.GetName().Version
檔案總管
右鍵
Property
Details 頁簽
File Version
檔案總管
右鍵
Property
Details 頁簽
Product Version
設定的Attribute名稱[assembly: AssemblyVersion("1.0.0.0")][assembly: AssemblyFileVersion("1.0.0.0")][assembly: AssemblyInformationalVersion("1.0.0.0")]

詳細說明往下看。

如何看dll的版號?

當dll build出來之後,可以直接對他點:

  1. 右鍵
  2. Property (內容)
  3. 切換到 頁簽 Details
裡面有兩個欄位有數字:
  1. File Version
  2. Product Version
image
建立出來的console版號

不過其實這個不是完整的版號內容,在dll裡面還有一個版號,這個版號是Assembly的版號,這個版號是.Net Reference dll看的版號。如果要看這個版號可以用powershell:

[System.Reflection.Assembly]::LoadFrom("d:\ConsoleApplication1.exe").GetName().Version
        
image
取得Assembly Version

從上面的資訊可以看出來,一個dll總共有3個版號:

  1. File Version
  2. Product Version
  3. Assembly Version
這3個版號的作用是什麼呢?

3個版號的差異是什麼?

Assembly Version
這個是.Net裡面內部再用的,所以當有reference某個dll,會包含一個版號的資訊。這個版號看的就是Assembly Version這個值。
File Version

原則上這個是用來區分build和build之間差異的版本資訊。因此,一般來說這個會包含像是build number這種資訊。

很有可能Assembly的版號還沒更新,但是在開發的過程,每一次build可能都不一樣,那麼這個時候File Version可能就會因此提升來表示這次build和上次build不同。

Product Version

這個主要用來表示,從一個產品的角度之間的差異。

如果用nuget建立出nuget的package,那麼nuget預設使用Product Version作為版號。

如何設定dll的版號?

到目前為止了解了3種不同版號的用意及如何看到這些版號的值,接下來就是如何在build的時候把這些版號資訊寫進去。

在建立任何專案的時候,都會自動建立出Properties\AssemblyInfo.cs這個檔案。

這個檔案包含一些dll的meta資訊,例如assembly的名稱,assembly描述等。其中一塊就是用來定義3個版號資訊。

這3個attribute分別為:

assembly: AssemblyVersion
對應到 Assembly Version
assembly: AssemblyFileVersion
對應到File Version
assembly: AssemblyInformationalVersion
對應到Product Version
其中 AssemblyInformationalVersion預設不存在,是需要自己手動添加。
image
設定內容的截圖

結語

這篇介紹了在.Net裡面的3個版號值的名稱,以及怎麼查到一個dll這三個值的方式。

再來介紹了如何在.Net專案透過設定Properties\AssemblyInfo.cs這個檔案來設定build出來的dll的3個值。

在下篇將會介紹版號的組成構架應該是如何,並且使用最常見的版號模式 SemVer 2.0(又稱為Semantic Version 2.0)


如果文章對您有幫助,就請我喝杯飲料吧
街口支付QR Code
街口支付QR Code
台灣 Pay QR Code
台灣 Pay QR Code
Line Pay 一卡通 QR Code
Line Pay 一卡通 QR Code
街口支付QR Code
支付寶QR Code
街口支付QR Code
微信支付QR Code
comments powered by Disqus