共用方式為


.NET 中的元件

以 .NET 為基礎的應用程式中,組件是部署、版本控制、重複使用、啟動範圍以及安全性權限的基本單位。 組件是一個類型和資源的集合,這些集合被建構成為一個具備功能的邏輯單元,以共同運作。 元件會採用可執行檔 (.exe) 或動態連結庫 (.dll) 檔案的形式,而且是 .NET 應用程式的建置組塊。 它們會向通用語言執行環境提供必要的資訊,以便了解類型實作。

在 .NET 和 .NET Framework 中,您可以從一個或多個原始程式碼檔案建置元件。 在 .NET Framework 中,元件可以包含一或多個模組。 如此一來,就可以規劃較大的專案,讓數位開發人員可以處理個別的原始碼檔案或模組,這些檔案會結合以建立單一元件。 如需模組的詳細資訊,請參閱 如何:建置多文件元件

元件具有下列屬性:

  • 組件會實現為 .exe.dll 檔案。

  • 針對以 .NET Framework 為目標的連結庫,您可以將元件放在 全域程式集緩存 (GAC) 中,以在應用程式之間共用元件。 您必須先強名稱元件,才能將它們包含在 GAC 中。 如需詳細資訊,請參閱 強名稱元件。

  • 程式組件只有在需要時才會載入記憶體中。 如果不使用它們,就不會載入。 因此,元件可以是管理較大專案中資源的有效率方式。

  • 您可以使用反射,透過程式取得組件的相關信息。 如需詳細資訊,請參閱反映(C#)反映(Visual Basic)。

  • 您可以使用 .NET 和 .NET Framework 上的 MetadataLoadContext 類別來載入並檢查元件。 MetadataLoadContext 取代了 Assembly.ReflectionOnlyLoad 方法。

Common Language Runtime 中的組件

程序集為 Common Language Runtime 提供其所需的資訊,以了解類型實作。 對執行階段而言,類型不存在於程序集的範圍之外。

元件會定義下列資訊:

  • Common Language Runtime 執行的程序代碼。 每個元件只能有一個進入點: DllMainWinMainMain

  • 安全性界限。 組件是要求和授予權限的單位。 如需元件中安全性界限的詳細資訊,請參閱 元件安全性考慮

  • 型別界限。 每個類型的身分識別都包含其所在元件的名稱。 在某個元件範圍中載入的型 MyType 別,與另一個元件範圍中載入的型 MyType 別不同。

  • 參考範圍界限元件指令清單具有用於解析類型和滿足資源要求的元數據。 指令清單會指定要在元件外部公開的類型和資源,並列舉其相依的其他元件。 除非具有相關聯的 元件指令清單,否則不會執行可攜式可執行檔 (PE) 檔案中的通用中繼語言 (CIL) 程式代碼。

  • 版本界限。 組件是 Common Language Runtime 中最小的可版本設定單位。 相同元件中的所有類型和資源都會以單位的形式進行版本設定。 元件指令清單描述您為任何相依元件指定的版本相依性。 如需版本設定的詳細資訊,請參閱 元件版本控制

  • 部署單位:當應用程式啟動時,只有應用程式一開始呼叫的元件必須存在。 其他元件,例如包含本地化資源或公用程式類別的元件,可以視需要擷取。 此程式可讓應用程式在第一次下載時簡單且精簡。 如需部署元件的詳細資訊,請參閱 部署應用程式

  • 並存執行單位:如需執行多個元件版本的詳細資訊,請參閱元件和並存執行

建立組件

元件可以是靜態或動態的。 靜態元件會儲存在可攜式可執行檔 (PE) 檔案的磁碟上。 靜態元件可以包含介面、類別和資源,例如點陣圖、JPEG 檔案和其他資源檔。 您也可以建立動態元件,這些元件會直接從記憶體執行,而且在執行之前不會儲存到磁碟。 執行動態元件之後,您可以將動態元件儲存至磁碟。

有數種方式可以建立組件。 您可以使用開發工具,例如可建立 .dll.exe 檔案的 Visual Studio。 您可以使用 Windows SDK 中的工具,透過來自其他開發環境的模組來建立元件。 您也可以使用常見語言執行時期 API,例如 System.Reflection.Emit,來建立動態組件。

在 Visual Studio 中建置元件、使用 .NET Core 命令行介面工具來建置元件,或使用命令行編譯程式建置 .NET Framework 元件。 如需使用 .NET CLI 建置元件的詳細資訊,請參閱 .NET CLI 概觀

備註

若要在 Visual Studio 中建置元件,請在 [建置] 功能表上,選取 [建置]。

組件清單

每個元件都有 元件指令清單 檔。 類似於目錄表,組件資訊清單包含:

  • 元件的身分識別(其名稱和版本)。

  • 描述包含元件之所有其他檔案的檔案表,例如您所建立的元件、您的 .exe.dll 檔案所依賴的其他檔案、位圖檔案或自述檔。

  • 元件參考清單,這是所有外部相依性的清單,例如 .dll或其他檔案。 元件參考包含全域和私用對象的參考。 全域物件可供所有其他應用程式使用。 在 .NET Core 中,全域物件會與特定的 .NET Core 運行時間結合。 在 .NET Framework 中,全域對象位於全域程式集緩存 (GAC) 中。 System.IO.dll 是 GAC 中元件的範例。 私人物件必須位於安裝您應用程式所在的目錄層級或下方的目錄層級。

元件包含內容、版本設定和相依性的相關信息。 因此,使用這些應用程式不需要依賴外部來源,例如 Windows 系統上的登錄,才能正常運作。 元件減少 .dll 衝突,並讓您的應用程式更穩定和易於部署。 在許多情況下,您可以安裝 。以 NET 為基礎的應用程式只要將其檔案複製到目標電腦即可。 如需詳細資訊,請參閱 元件指令清單

新增元件的參考

若要在應用程式中使用組件,您必須加入它的參考庫。 參考元件時,應用程式可以使用所有可存取的類型、屬性、方法及其命名空間的其他成員,就像其程式代碼是來源檔案的一部分一樣。

備註

.NET 類別庫的大部分組件會被自動參考。 如果未自動參考系統元件,請以下列其中一種方式新增參考:

  • 針對 .NET 和 .NET Core,新增包含元件的 NuGet 套件參考。 在 Visual Studio 中使用 NuGet 套件管理員,或將<PackageReference>元素新增到指定元件的 .csproj.vbproj 專案中。
  • 針對 .NET Framework,使用 Visual Studio 中的 [新增參考] 對話框或使用 -referenceVisual Basic 編譯器的 命令行選項來新增元件的參考。

在 C# 中,您可以在單一應用程式中使用兩個相同程式集的版本。 如需詳細資訊,請參閱 extern alias

標題 說明
組裝內容 組成裝配的元件。
元件指令清單 元件指令清單中的數據及其在元件中的儲存方式。
全域程式集緩存 GAC 如何儲存和使用元件。
強名稱元件 強名稱元件的特性。
元件安全性考慮 安全性如何與元件搭配運作。
程式集版本控制 .NET Framework 版本控制原則的概觀。
元件放置 要定位組裝件的位置。
程序集和並列執行 同時使用多個版本的執行階段或元件。
發出動態方法和組件 如何建立動態元件。
執行階段如何尋找元件 .NET Framework 如何在執行時解析元件參考。

參考文獻

System.Reflection.Assembly

另請參閱