1. 程式人生 > 其它 >C# 溫故知新 第三篇 C# 程式設計概念 之程式集

C# 溫故知新 第三篇 C# 程式設計概念 之程式集

在微軟C# 官方開發指南中,介紹到在C# 開發中設計到這些 程式設計概念 當然包括不限於這些:

程式集:程式集構成了 .NET 應用程式的部署、版本控制、重用、啟用範圍和安全許可權的基本單元。 程式集是為協同工作而生成的型別和資源的集合,這些型別和資源構成了一個邏輯功能單元。 程式集採用可執行檔案 (.exe) 或動態連結庫檔案 (.dll) 的形式,是 .NET 應用程式的構建基塊 。 它們向公共語言執行時提供了注意型別實現程式碼所需的資訊。

從官方定義可以看出程式集是一個集合,是型別和資源的集合。

包括兩種檔案型別:

1. 採用可執行檔案 (.exe)

2. 動態連結庫檔案 (.dll)

程式集有如下屬性:

  • 程式集以 .exe 或 .dll 檔案的形式實現 。

  • 對於面向 .NET Framework 的庫,可通過將程式集放入全域性程式集快取 (GAC),在應用程式之間共享程式集。 必須先對程式集進行強命名,然後才能將它們包含到 GAC 中。 有關詳細資訊,請參閱具有強名稱的程式集

  • 只有在需要使用時才會將程式集載入到記憶體中。 如果未使用程式集,則不載入。 也就是說,使用程式集,可以在大型專案中高效管理資源。

  • 可以使用反射,以程式設計方式獲取程式集的相關資訊。 有關詳細資訊,請參閱反射 (C#)反射 (Visual Basic)

  • 可載入一個程式集,使用 .NET 和 .NET Framework 中的

    MetadataLoadContext類來檢查該程式集。MetadataLoadContext取代了Assembly.ReflectionOnlyLoad方法

建立程式集

程式集可以為靜態或動態。 靜態程式集儲存在磁碟上的可遷移可執行 (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 應用程式的檔案複製到目標計算機,即可進行安裝。 有關詳細資訊,請參閱程式集清單

新增對程式集的引用

必須新增對應用程式中的程式集的引用,才能使用該程式集。 引用程式集後,應用程式可以使用其名稱空間的所有可訪問型別、屬性、方法和其他成員,就好像它們的程式碼是原始檔的一部分一樣。

這裡介紹下nuget ,在visual studio

開啟nuget 包管理器

選擇需要安裝的包

選擇需要引入的專案

選擇版本點選安裝即可