簡體   English   中英

CLR如何識別Assmebly版本變更?

[英]How CLR will identify Assmebly version change?

此頁面http://support.microsoft.com/kb/556041明確說明了AssemblyVersion和AssemblyFile版本之間的區別。

並且此頁面還說明了何時更改兩者。 我仍然有一個問題

假設我交付了一個版本為Assembly 1的點網組件,現在由於它是一個頻繁的更改,因此我僅更改AssemblyFileVersion。 然后,我要復制新的組件,CLR如何知道我的程序集版本未更改。 現在,這兩個組件(舊的和新的)都具有相同的assemblyVersions,那么CLR如何識別要使用的組件?

在CLR 重視[的AssemblyFileVersion。 它只是一個參考編號,例如,您可以在Windows資源管理器中看到它。 通常的方法是在發貨之前重建裝配時增加它。 保持較小的錯誤修復分開的方式。

這只大狗是[的AssemblyVersion],CLR的支付多多關注那一個。 當它在運行時找到程序集時,該版本必須與構建程序所使用的參考程序集匹配。 如果不是,則CLR假定發生DLL Hell,並拒絕運行該程序。 對於GAC也很重要,您可以在那里存儲多個具有相同名稱但不同版本的DLL。 這是DLL地獄的對策。

所以,你增加[的AssemblyVersion]當你在公共接口的組件的重大更改是必要的 如果不重新編譯或進行其他調整以應對更改,則使使用程序集的程序失敗的那種機會。 因此,用戶將獲得清晰的錯誤消息,而不是某種難以診斷的異常。 更糟糕的是,一點也不例外,只是無法診斷的錯誤行為。

您需要確保[AssemblyVersion]遞增。 實際上,這樣做並不容易,許多公司在發布更新時只是自動遞增[AssemblyVersion],即使沒有更改或更改沒有中斷也是如此。 由.NET通過在屬性中使用星號(*)來支持。 這樣更安全。 但是,除此之外,還必須更新所有依賴程序。 這當然並不罕見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM