首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET 組件版本策略配置完全指南:應用程式、發行者、電腦三層級重導向機制

     編輯:關於.NET

本文節選自《.NET 程式設計師面試指南》,透過面試題深度解析組件版本策略原理與配置方法。

版本策略核心原理

當組件透過名稱、版本、文化特性、公開金鑰載入時,CLR 允許指定哪些版本可替代當前版本載入。版本策略 = 組件版本重導向,將載入當前版本導向可替代版本。可在三個層級配置:

  1. 應用程式策略
  2. 發行者策略
  3. 電腦策略

三層級皆透過 XML 組態檔配置,CLR 依序執行:應用程式 → 發行者 → 電腦,上一層輸出作為下一層輸入。

1. 應用程式策略

位於應用程式目錄下:

  • .EXE:exe檔名.config(如 test.exe.config)
  • Web 應用:web.config

版本策略記錄於 <assemblyBinding> 節點:

<?xml version="1.0"?>
<configuration>
  <runtime>
    <assemblyBinding>
      <dependentAssembly>
        <assemblyIdentity 
          name="NET.MST.Second.Compile"
          publicKeyToken="60c29e5f0af3e9bb" />
      </dependentAssembly>
      <bindingRedirect oldVersion="0.0.0.0-12.2.2.2" newVersion="12.3.0.0" />
    </assemblyBinding>
  </runtime>
</configuration>

將 0.0.0.0~12.2.2.2 所有版本重導向至 12.3.0.0。

2. 發行者策略

針對置入 GAC 的組件。格式同應用程式策略,但檔名特殊:主版本.次版本.組件名.dll。一個組件每個主/次版本僅能有一個發行者策略。與組件一同放入 GAC。

3. 電腦策略

檔名固定為 machine.config,位於 %SystemRoot%\Microsoft.NET\Framework\v****\CONFIG 目錄。格式同前兩者。

三層級協作與發行者策略略過條件

執行順序:應用程式 → 發行者 → 電腦。發行者策略為可選,以下兩種情況略過:

  1. 組件未加入 GAC(無發行者策略檔案)
  2. 應用程式策略指定忽略發行者策略

忽略發行者策略配置:

<publisherPolicy apply="no" />

完整範例(在前例基礎上添加):

<assemblyBinding>
  <dependentAssembly> ... </dependentAssembly>
  <bindingRedirect oldVersion="0.0.0.0-12.2.2.2" newVersion="12.3.0.0" />
  <publisherPolicy apply="no" />
</assemblyBinding>

總結

CLR 支援三層級版本策略,依序執行並傳遞結果。發行者策略僅針對 GAC 組件,可在應用程式層透過 publisherPolicy apply="no" 略過。掌握此機制可解決組件版本衝突、實現無縫升級與相容性控制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved