並存執行概觀

並存執行是在同一台電腦上執行多個版本之應用程式或元件的能力。在同一台電腦上,您可以同時擁有 Common Language Runtime 的多個版本,以及使用某一版執行階段的應用程式和元件的多個版本。

下圖顯示在同一台電腦上有幾個應用程式使用執行階段的兩個不同版本。應用程式 A、B 和 C 使用 Runtime 1.0 版,而應用程式 D 則使用 Runtime 1.1 版。

兩個版本執行階段的並存執行

並存執行

.NET Framework 包含 Common Language Runtime 以及約 24 個左右內含 API 型別的組件。Runtime 和 .NET Framework 組件的版本為個別指定。例如,1.0 版的執行階段實際上是 1.0.3705.0 版,而 1.0 版的 .NET Framework 組件則是 1.0.3300.0 版。

下圖顯示在同一台電腦上有幾個應用程式使用元件的兩個不同版本。應用程式 A 和 B 使用 1.0 版的元件,而應用程式 C 則使用相同元件的 2.0 版。

兩個版本元件的並存執行

並存執行

並存執行提供更多控制權,供您控制應用程式所繫結之元件版本,以及應用程式所使用的執行階段版本。

並存執行的優點

在 Microsoft Windows XP 和 .NET Framework 推出之前,由於應用程式無法辨別相同程式碼的不相容版本,因此會發生 DLL 衝突的狀況。DLL 中包含的型別資訊只繫結至檔案名稱,故應用程式無從得知 DLL 中包含的型別是否與與應用程式建置時所用的型別相同。因此,新版元件可能會覆寫舊版元件並破壞應用程式。

並存執行和 .NET Framework 提供下列功能以消除 DLL 的衝突:

  • 強式名稱的組件。

    並存執行使用強式名稱的組件,將型別資訊繫結至組件的特定版本。這可防止應用程式或元件繫結至組件的無效版本。強式名稱的組件也允許多個版本的檔案存在同一台電腦上,並供應用程式使用。如需詳細資訊,請參閱強式名稱的組件

  • 版本感知程式碼儲存區。

    .NET Framework 在全域組件快取中提供版本感知程式碼儲存區。全域組件快取是一種全電腦程式碼快取,存在於已經安裝 .NET Framework 的所有電腦上。它是依據版本、文化特性 (Culture) 和發行者 (Publisher) 資訊來儲存組件,並且可以支援多個版本的元件和應用程式。如需詳細資訊,請參閱全域組件快取

  • 隔離性。

    使用 .NET Framework,您可以建立隔離執行的應用程式和元件;這種隔離執行的功能是並存執行的基本構成要素。隔離的主要因素在於能夠掌握您要使用的資源,並且能放心地在應用程式或元件的多個版本之間共用資源。隔離也包括使用版本特定的方式儲存檔案。如需隔離的詳細資訊,請參閱建立並存執行應用程式和元件的方針

版本相容性

.NET Framework 的 1.0 和 1.1 版設計成可彼此相容。用 .NET Framework 1.0 版建置的應用程式應該可以在 1.1 版上執行,而用 .NET Framework 1.1 版建置的應用程式也應該可以在 1.0 版上執行。但請注意,.NET Framework 1.1 版中加入的 API 功能無法在 1.0 版的 .NET Framework 中使用。以 2.0 版建立的應用程式僅能在 2.0 版上執行。2.0 版的應用程式在 1.1 或之前的版本上無法執行。如需執行階段相容性的完整討論,請參閱版本相容性

.NET Framework 的版本被視為一個由執行階段及其關聯的 .NET Framework 組件組成的單一單位 (這個概念稱為「組件的版本對應轉換」)。您可以將組件繫結重新導向,以包含 .NET Framework 組件的其他版本,但是覆寫預設組件繫結可能會有風險,因此部署之前必須經過棈密的測試。

請參閱

工作

HOW TO:針對 .NET Framework 版本使用應用程式組態檔

其他資源

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