日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET项目版本号的小随笔

發布時間:2023/12/4 asp.net 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET项目版本号的小随笔 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題外話】

一直以來都對.NET項目中的幾個版本號(AssemblyVersion、AssemblyFileVersion、AssemblyInformationalVersion)以及版本號中的Revision和Build有疑問,今兒抽了點時間看了幾篇文章,整理一下與大家一起分享下。

【一、AssemblyVersion與AssemblyFileVersion】

眾所周知,.NET項目屬性中可以設置兩種版本號,一種叫程序集版本(AssemblyVersion),一種叫文件版本(AssemblyFileVersion),在微軟的知識庫(見相關鏈接1)中有一篇文章提到了這兩個版本號的區別,我大致翻譯一下。

Assembly Version:這是在.NET Framework中編譯和運行時使用的版本號,使用該版本號定位和加載指定程序集。當你在你的項目中引用了指定的程序集,其版本號將會嵌入到你的項目中。在運行時,CLR通過該版本號加載指定程序集。注意,僅當程序集使用強命名時,才會使用程序集名稱、公鑰、語言信息以及該版本號查找指定程序集,否則只會根據文件名進行查找。

Assembly File Version:這是在文件系統中給文件的版本號,會在Windows資源管理器中顯示。但是,在.NET Framework引用類庫時從來不會用到這個版本。

我們可以創建兩個項目試試,對于引用沒有使用強命名程序集的項目,不論修改Assembly Version還是修改Assembly File Version,都不會出現任何錯誤;而對于引用了使用強命名程序集的項目,一旦引用的程序集的Assembly Version修改,則會出現如下圖所示的錯誤,導致程序無法運行,而修改Assembly File Version則不會出現任何錯誤。

所以, 在知識庫的文章中,也給出了建議的方法:

如果您在為一個應用程序構建一個很多開發者都在引用的基礎程序集,并且這個程序集更新速度非常快,比如一天一次之類的,而且這個程序集還是強命名的,那么您每次更新完程序集后所有的開發者都需要重新更新引用。這樣做非常繁瑣并且還容易引用出錯。所以對于這種情況更好的辦法是,固定好Assembly Version,而只修改Assembly File Version,即使用后者來表示最新的版本號。在這種情況下,開發者們不需要更新引用,而僅僅只需要把新的程序集文件覆蓋到引用目錄下就可以了。在中間或最后發布的版本中,為了更有意義,可以更新Assembly Version,使Assembly File Version與Assembly Version近似。

在相關鏈接2的文章中,作者也給出了修改Assembly Version的情景:

1、當程序集為了維護而更新時,為了向后兼容,一定不要修改Assembly Version。

2、在程序集有重大修改時,一定要修改Assembly Version。

?

【二、AssemblyInformationalVersion】

除了上述兩種版本號外,其實還有一種版本號,可以自己在AssemblyInfo.cs文件中添加,那就是AssemblyInformationalVersion,從名字就可以看出來,這個版本號更大的意義是版本的信息,而不僅僅是數字的描述,比如可以設置為如下的版本信息之類的。

[assembly: AssemblyInformationalVersion("1.0 RC")]

AssemblyInformationalVersion與AssemblyFileVersion一樣,都是可以在Windows資源管理器中顯示的,換言之,其都是存儲在Win32版本資源中的。所以如果不設置AssemblyInformationalVersion的話,默認在文件屬性里顯示的“產品版本”就是AssemblyFileVersion,而設置了AssemblyInformationalVersion以后,才會顯示AssemblyInformationalVersion設置的內容。如下圖,左邊為未設置AssemblyInformationalVersion,右邊為設置了AssemblyInformationalVersion。

?

【三、Build與Revision】

對于.NET的項目,版本號是由Major.Minor.Build.Revision構成的,通常被稱作主要版本、次要版本、內部版本以及修訂號。在MSDN上有專門對版本號說明的內容(見相關鏈接3),比較重要的摘抄如下:

Major:名稱相同但主要版本號不同的程序集不可互換。 更高版本號可能表明大幅重寫無法假定向后兼容的產品。
Minor:如果兩個程序集的名稱和主要版本號相同,而次要版本號不同,這指示顯著增強,但照顧到了向后兼容性。 該較高的次要版本號可指示產品的修正版或完全向后兼容的新版本。
Build:生成號的不同表示對相同源所作的重新編譯。 處理器、 平臺或編譯器更改時,可能使用不同的生成號。
Revision:名稱、主要版本號和次要版本號都相同但修訂號不同的程序集應是完全可互換的。 更高修訂號可能在修復以前發布的程序集安全漏洞的版本中使用。

程序集的只有Build或Revision不同的后續版本被認為是先前版本的修補程序 (Hotfix) 更新。

?在《CLR via C#(第3版)》一書中,也提到了版本號的建議使用方式:

如果公司每天都要生成程序集,那么每天都應該遞增這個build號。最后一個編號指出build的修訂次數。如果因為某個原因,公司某一天必須生成兩次程序集(可能是為了修復一個重大的bug),revision號就應該遞增。

Microsoft使用的就是這個版本編號方案,而且建議你也是用它。

?【相關鏈接】

  • How to use Assembly Version and Assembly File Version:http://support.microsoft.com/kb/556041/en-us

  • Assembly Versioning in .NET:http://www.danielfortunov.com/software/%24daniel_fortunovs_adventures_in_software_development/2009/03/03/assembly_versioning_in_net

  • Version 類:http://msdn.microsoft.com/zh-cn/library/system.version.aspx

  • 原文地址:http://www.cnblogs.com/mayswind/p/3387680.html


    .NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

    總結

    以上是生活随笔為你收集整理的.NET项目版本号的小随笔的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。