如何配置程式集的版本策略

2021-08-23 11:28:18 字數 1708 閱讀 3332

如何配置程式集的版本策略

本文節選自《.net程式設計師面試指南》一書

在實際工作中,版本策略被使用得比較多,本節將借助分析這個面試題來簡要介紹程式集的版本策略和配置方法。

所涉及到的知識點

• 版本策略的基本原理

• 程式集版本策略的配置

分析問題

當乙個程式集通過名字、版本、文化和公鑰進行載入時,clr允許程式設計師指定該程式集的哪些版本可以代替目前版本進行載入。這些都是通過版本策略來實現的。所謂的版本策略,就是乙個程式集版本的重定向,把載入當前這個版本定向到載入可替代的版本。版本策略可以在以下三個級別上進行配置:

• 應用程式策略

• 發行者策略

• 計算機策略

這三個級別的版本策略都可以通過xml檔案來進行配置。現在筆者來分別介紹。

1.應用程式策略

應用程式策略可以在應用程式配置檔案中進行配置,應用程式配置檔案位於應用程式目錄下。對於.exe應用程式,其配置檔案由exe檔名加上.config字尾名構成,例如乙個test.exe的應用程式,其配置檔案就是test.exe.config。而對於任何乙個web應用程式來說,其配置檔案的檔名都是web.config。

版本策略都記錄在配置檔案的assemblybinding節點下。**2-7是乙個應用程式的配置檔案例子,這裡只選取了本節所關心的版本策略部分內容。

**2-7 versionstrategy:web.config

<?xml version="1.0"?>

在**2-7這個配置檔案中,指定了net.mst.second.compile,60c29e5f0af3e9bb這個元件的版本策略,這個策略將0.0.0.0到12.2.2.2之間的所有版本重定向到12.3.0.0版本上。

2.發行者策略

發行者策略是針對那些被放入全域性程式集快取(gac)中的程式集,發行者策略以乙個和**2-6同樣格式的配置檔案形式繫結到程式集上,被一同放入gac中。發行者策略配置檔案的檔名非常古怪,它是這樣的乙個字串:主版本號.次版本號.程式集名.dll。正因為如此,乙個程式集的每個主版本/次版本號只能有乙個發行者策略。

3.計算機策略

同樣地,計算機策略同樣由乙個配置檔案表示,它的格式也和**2-7基本類似。計算機級版本策略配置檔案的檔名為:machine.config,它被儲存在%systemroot%/ microsoft.net/ framework/v****/config/目錄下。

讀到這裡,讀者可能會有這樣的疑問:版本策略可以在3個級別進行配置,那這些策略是如何協作的呢?按照.net的機制,3個級別的版本策略將會按照順序依次執行,而上一級別的執行結果將會被作為下一級別的執行輸入,圖2.6展示了這個執行過程。

如圖2.6所示,3個級別版本策略被依照:應用程式、發行者、計算機的順序依次執行。而其中,發行者策略是可選的,在以下兩種情況下發行者策略將不會被執行。

• 程式集沒有被加入到gac中

• 應用程式策略制定忽略發行者策略

**2-8 versionstrategy-nopolisherpolicy:web.config

<?xml version="1.0"?>

答案clr支援在3個級別上設定版本策略,依次是:應用程式策略、發行者策略和計算機策略。所有策略的設定都是通過修改配置檔案來實現。3個級別的策略依次會被clr執行,而上乙個策略的執行結果將被作為下乙個策略的輸入。發行者策略僅僅針對那些放入gac的程式集,並且可以在應用程式策略中被指定忽略。

5}j j l/m8rsm13164110

C 程式集系列08,設定程式集版本

區別乙個程式集,不僅僅是程式集名稱,還包括程式集版本 程式集公匙 程式集文化等,本篇體驗通過介面和編碼設定程式集版本。通過visual studio設定程式集版本 右鍵專案,選擇 屬性 選擇 應用程式 點選 程式集資訊 設定如下,點選確定 點選專案properties資料夾下的assemblyinf...

你應該知道的程式集版本

乙個程式集會有三個版本,每個版本都是做什麼的呢,我們來看一下,每個版本號的用途及正確用法 示例版本號 major 主版本號 minor 次版本號 build 內部版本號 revision 修訂號 23 7195 前兩個編號構成了公眾對版本的理解,公眾會將這個版本號視為這個程式集的2.3版本,第三個編...

如何除錯程式的 Release 版本

首先,徹底的release版本 vc預設 是無法進行源 級別的除錯的,即使從別的地方把pdb檔案拷貝過來也沒用。如果想要進行源 級別的除錯,在生成release版本 dll,exe,ocx 時就要把一些除錯資訊build到dll exe ocx中,並讓編譯程式生成對應的pdb檔案來儲存詳細的除錯資訊...