組件是 .NET 應用程式的部署、版本控制、安全性與型別識別的基本單位。以 DLL 形式存在,包含編譯後的 IL 代碼、中繼資料與資訊清單。C# 建立組件極為簡單,無需像 C++ COM 那樣處理註冊表、GUID、介面定義語言(IDL)等複雜細節。
MathLibrary),設定位置,確定專案預設包含 Class1.cs 與 AssemblyInfo.cs(組件屬性:版本、公司、著作權等)。
namespace MathLibrary
{
using System;
///
/// 提供基本數學運算的元件
///
public class Calculator
{
private bool _isEnabled = true;
public Calculator() { }
///
/// 兩數相加
///
public long Add(long val1, long val2)
{
return val1 + val2;
}
///
/// 啟用/停用狀態
///
public bool IsEnabled
{
get => _isEnabled;
set => _isEnabled = value;
}
}
}
MathLibrary)bin\Debug\MathLibrary.dll(或 Release 目錄)csc /target:library /out:MathLibrary.dll Calculator.csMathClient)MathLibraryMathLibrary.dllusing System;
using MathLibrary; // 匯入組件命名空間
namespace MathClient
{
class Program
{
static void Main(string[] args)
{
var calc = new Calculator();
long sum = calc.Add(23, 40);
Console.WriteLine($"23 + 40 = {sum}");
calc.IsEnabled = false;
Console.WriteLine($"元件狀態: {(calc.IsEnabled ? "啟用" : "停用")}");
Console.ReadKey();
}
}
}
確保組件唯一身分,防止偽造與衝突:
sn -k MyKey.snkMyKey.snkgacutil /i MathLibrary.dll
適用於多應用程式共用的組件。私有組件(僅單一應用程式使用)只需置於應用程式目錄即可,無需安裝 GAC。
主要版本.次要版本.建置編號.修訂編號(如 1.0.0.0)
AssemblyVersion:執行期繫結依據AssemblyFileVersion:檔案屬性顯示用| 問題 | 原因 | 解決方案 |
|---|---|---|
| 找不到組件/型別 | 參考路徑錯誤、未複製到輸出目錄 | 檢查參考屬性 複製到本機 = True |
| 版本衝突 | 多個版本同時載入 | 使用強式名稱、bindingRedirect 設定 |
| MissingMethodException | 執行期版本與編譯期不符 | 重新編譯客戶端、檢查版本原則 |
C# 建立組件流程:類別庫專案 → 設計 public API → 建置 DLL → 客戶端加入參考 → 呼叫。善用命名空間組織、XML 註解、強式名稱與版本策略,即能構建可重用、可維護、企業級的元件庫。