建立並存執行應用程式和元件的方針

請遵照下列一般方針建立針對並存執行而設計的 Managed 應用程式或元件:

  • 將型別識別繫結到特定版本的檔案

    Common Language Runtime 會使用強式名稱的組件,將型別識別繫結到特定的檔案版本。若要建立並存執行的應用程式或元件,您必須為所有組件指定強式名稱 (Strong Name)。這可建立精確的型別識別,並確保任何型別解析都會被導向正確的檔案。強式名稱的組件包含版本、文化特性和發行者資訊,可供執行階段用來找出符合繫結要求的正確檔案。

  • 使用版本感知儲存區

    Runtime 使用全域組件快取提供版本感知儲存區。全域組件快取是一種版本感知目錄結構,安裝在使用 .NET Framework 的每一台電腦上。安裝在全域組件快取的組件不會在安裝該組件新版本時被覆寫。

  • 建立隔離執行的應用程式或元件

    隔離執行的應用程式或元件必須管理資源,以避免該應用程式或元件的兩個執行個體同時執行時產生衝突。應用程式或元件也必須使用版本特定的檔案結構。

應用程式和元件隔離

隔離是成功設定並存執行應用程式或元件的其中一個關鍵。應用程式或元件必須以隔離的方式管理所有資源,尤其是檔案 I/O。請遵照這些方針,確定您的應用程式或元件是否隔離執行:

  • 以版本特定的方式寫入登錄。儲存群組或機碼中指出版本的值,且不要在各種元件版本之間共用資訊或狀態。這可防止同時執行的兩個應用程式或元件將資訊覆寫掉。

  • 使具名的核心物件變成版本特定的物件,以防止競爭情形發生。例如,當相同應用程式兩個版本的兩個號誌 (Semaphore) 互相等候時就會發生競爭情形。

  • 將檔案和目錄名稱變成版本感知的名稱。這表示檔案結構應該以版本資訊為基礎。

  • 使用版本特定的方式建立帳戶和群組。應用程式建立的使用者帳戶和群組應該以版本識別。請勿在各種應用程式版本之間共用使用者帳戶和群組。

安裝和解除安裝版本

設定並存執行的應用程式時,請遵照下列有關安裝及解除安裝版本的方針:

  • 請勿刪除登錄中的資訊;其他應用程式在不同版本的 .NET Framework 下執行時可能需要用到這些資訊。

  • 請勿取代登錄中的資訊;其他應用程式在不同版本的 .NET Framework 下執行時可能需要用到這些資訊。

  • 請勿移除註冊 COM 元件;其他應用程式在不同版本的 .NET Framework 下執行時可能需要用到這些資訊。

  • 請勿變更 InprocServer32 或已經註冊的 COM 伺服器的其他登錄項目。

  • 請勿刪除使用者帳戶或群組;其他應用程式在不同版本的 .NET Framework 下執行時可能需要用到這些資訊。

  • 請勿在內含無版本路徑的登錄中加入任何項目。

檔案版本號碼和組件版本號碼

檔案版本是執行階段不用的 Win32 版本資源。一般來說,您甚至可以為就地 QFE 更新檔案版本。兩個相同的檔案可以有不同的版本資訊,而兩個不同的檔案也可以有相同的檔案版本資訊。

組件版本可供執行階段用於組件繫結。Runtime 會將兩個具有不同版本號碼的相同組件視為兩個不同的組件。

全域組件快取工具 (Gacutil.exe) 讓您可以在只有檔案版本號碼較新時取代組件。除非組件版本號碼比較高,否則安裝程式通常不會在組件上執行覆寫安裝。

請參閱

概念

組件繫結重新導向
決定應用程式和元件的服務策略

其他資源

並存執行基礎觀念
建立多個版本的應用程式或元件