首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Visual C# 建立與使用 DLL 完整教學:類別庫、編譯指令、客戶端呼叫

     編輯:關於C語言

前言

C# 編譯產出的 DLL 與傳統 C++/VB DLL 本質不同:它是受控代碼(Managed Code),包含中間語言(IL),需經 CLR JIT 編譯為機器碼才能執行。本質上是類別庫(Class Library)。本文完整示範:建立 DLL 原始碼、CSC 編譯指令、客戶端專案呼叫全流程。

一、環境需求

  • Windows 2000 / XP / 7 / 10 / 11
  • .NET Framework SDK / Visual Studio
  • 命令列工具:csc.exe(C# 編譯器)

二、建立 DLL 原始碼

DLL 無需 Main 進入點,本質是封裝命名空間與類別。

dll.cs

namespace MyDll
{
    public class Calculator
    {
        public string GetWelcomeMessage()
        {
            return "歡迎使用 Visual C# 建立的類別庫!";
        }
        
        public int Add(int a, int b) => a + b;
        public int Multiply(int a, int b) => a * b;
    }
}

三、編譯 DLL:csc.exe 參數詳解

csc /target:library /out:MyDll.dll /reference:System.dll dll.cs

參數說明

編譯結果

產生 MyDll.dll,包含 IL 代碼與組件資訊清單,可供任何 .NET 語言呼叫。

四、建立客戶端程式呼叫 DLL

test.cs

using System;
using MyDll; // 導入 DLL 命名空間

public class Program
{
    public static void Main()
    {
        Calculator calc = new Calculator(); // 實例化 DLL 中的類別
        Console.WriteLine(calc.GetWelcomeMessage());
        Console.WriteLine($"10 + 20 = {calc.Add(10, 20)}");
        Console.WriteLine($"6 × 7 = {calc.Multiply(6, 7)}");
    }
}

編譯客戶端(需參考 DLL)

csc /reference:MyDll.dll /reference:System.dll /out:TestApp.exe test.cs

執行結果

歡迎使用 Visual C# 建立的類別庫!
10 + 20 = 30
6 × 7 = 42

五、Visual Studio 圖形化操作(推薦實務)

建立類別庫專案

  1. VS → 新增專案 → 類別庫
  2. 撰寫程式碼
  3. 建置 → 輸出 bin\Debug\MyDll.dll

建立客戶端專案並參考

  1. 方案總管 → 參考 → 右鍵 → 加入參考 → 專案/瀏覽 → 選擇 MyDll.dll
  2. using MyDll; 導入命名空間
  3. 直接呼叫類別與方法

六、C# DLL vs 傳統 DLL 核心差異

參數說明範例
/target:library輸出類別庫(DLL)/t:library
/target:exe輸出主控台應用程式/t:exe
/target:winexe輸出 Windows 應用程式/t:winexe
/target:module輸出模組(無組件資訊)/t:module
/out:檔名指定輸出檔名/out:MyDll.dll
/reference:組件參考其他組件/r:System.dll
/debug產生偵錯符號/debug+
/optimize啟用優化/optimize+
特性傳統 DLL (C++/VB6)C# DLL (Managed)
代碼類型機器碼IL (中間語言)
執行環境直接由 OS 載入需 CLR + JIT 編譯
匯出方式函數匯出表 (__declspec(dllexport))公共類別/方法 (public class/method)
呼叫慣例stdcall/cdecl 等CLR 統一呼叫慣例
型別系統C/C++ 原生型別.NET 通用型別系統 (CTS)
版本管理困難組件版本、強名稱、GAC
跨語言互通需定義 C 介面原生支援所有 .NET 語言

七、進階主題

  • 強名稱簽署:sn -k key.snk → 專案屬性 → 簽署 → 可部署至 GAC
  • 版本控制:AssemblyVersion、AssemblyFileVersion
  • NuGet 套件:dotnet pack 發布至 NuGet.org
  • 相依性注入:介面定義在獨立組件,實作於 DLL,DI 容器注入

總結

C# 建立 DLL 本質是建立類別庫,核心流程:

  1. 定義 public 類別與方法
  2. csc /t:library 編譯或 VS 專案建置
  3. 客戶端 /reference 參考 DLL
  4. using 導入命名空間,直接實例化呼叫

理解其為受控代碼、IL 本質、CLR 執行模型,能避免傳統 DLL 思維帶來的誤區。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved