共用方式為


建立並排執行元件的指南

備註

本文專屬於 .NET Framework。 它不適用於較新的 .NET 實作,包括 .NET 6 和更新版本。

請遵循下列一般指導方針來建立專為並存執行而設計的受控應用程式或元件:

  • 將類型識別系結至特定版本的檔案。

    公共語言執行環境會使用強名稱組件,將類型識別綁定至特定檔案版本。 若要建立應用程式或元件以並行執行,您必須為所有元件提供強名稱。 這會建立精確的類型識別,並確保任何類型解析都導向正確的檔案。 強名稱元件包含版本、文化特性和發行者資訊,執行階段用來找出正確的檔案以滿足繫結要求。

  • 使用版本感知儲存。

    運行期間會使用全域組件緩存來提供版本感知儲存。 全域程式集緩存是安裝在使用 .NET Framework 的每部電腦上的版本感知目錄結構。 安裝新版本的元件時,不會覆寫安裝在全域程式集緩存中的元件。

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

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

應用程式和元件隔離

成功設計應用程式或元件以進行並存執行的關鍵之一是隔離。 應用程式或元件必須以隔離的方式管理所有資源,特別是檔案 I/O。 請遵循下列指導方針,確定您的應用程式或元件會以隔離方式執行:

  • 以版本區分的方式寫入登錄檔。 請將值儲存在指示版本的註冊表區或鍵中,並且不應跨元件版本共用資訊或狀態。 這可防止同時執行的兩個應用程式或元件覆寫資訊。

  • 將具名核心物件與特定版本關聯,以防止競態條件的發生。 例如,當來自相同應用程式兩個版本的兩個旗號彼此等候時,就會發生競爭條件。

  • 將檔案和目錄名稱設為支援版本控制。 這表示檔案結構應該依賴版本資訊。

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

版本的安裝和卸載

設計應用程式以並行執行時,請遵循下列有關安裝和卸載版本的指導方針:

  • 請勿從登錄中刪除其他在 .NET Framework 版本下執行的應用程式可能需要的資訊。

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

  • 請勿取消註冊在其他 .NET Framework 版本下執行的應用程式可能需要的 COM 元件。

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

  • 請勿刪除其他在 .NET Framework 版本下執行的應用程式可能需要的用戶帳戶或群組。

  • 請勿將任何專案新增至包含未版本路徑的登錄。

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

檔案版本是運行時間未使用的 Win32 版本資源。 一般來說,即使是在原地進行更新時,您也應該更新檔案版本。 兩個相同的檔案可以有不同的檔案版本資訊,而兩個不同的檔案可以有相同的檔案版本資訊。

執行階段會使用組件版本進行組件繫結。 執行階段將兩個版本號碼不同的相同元件視為兩個不同的元件。

全域程式集緩存工具 (Gacutil.exe) 可讓您在只有檔案版本號碼較新時取代元件。 安裝程式通常不會在某個元件上重新安裝,除非該元件的版本號碼較大。

另請參閱