類別庫將功能封裝為獨立組件,供多個專案參考使用。本文示範命令列建立 DLL 與用戶端程式參考流程。
/LibraryDemo
├── Factorial.cs // 階乘計算
├── DigitCounter.cs // 數字計數
└── FunctionClient.cs // 用戶端測試程式
using System;
namespace MathUtils
{
public class Factorial
{
public static int Calculate(int n)
{
return (n <= 1) ? 1 : n * Calculate(n - 1);
}
}
}
using System;
namespace MathUtils // 相同命名空間,邏輯歸類
{
public class DigitCounter
{
public static int CountDigits(string input)
{
int count = 0;
foreach (char c in input)
if (char.IsDigit(c)) count++;
return count;
}
}
}
// /target:library 指定輸出為 DLL
// /out:Functions.dll 指定輸出檔名
csc /target:library /out:Functions.dll Factorial.cs DigitCounter.cs
產出 Functions.dll,包含 MathUtils.Factorial 與 MathUtils.DigitCounter 兩個類別。
using System;
using MathUtils; // 導入類別庫命名空間
class FunctionClient
{
static void Main(string[] args)
{
Console.WriteLine("Function Client Demo");
if (args.Length == 0)
{
Console.WriteLine("用法:FunctionClient.exe <數字1> <數字2> ...");
return;
}
foreach (string arg in args)
{
if (int.TryParse(arg, out int number))
{
int digitCount = DigitCounter.CountDigits(arg);
int factorial = Factorial.Calculate(number);
Console.WriteLine($"輸入:[{arg}] 數字個數:[{digitCount}] 階乘:[{factorial}]");
}
else
{
Console.WriteLine($"忽略非數字輸入:{arg}");
}
}
}
}
// /R:Functions.dll 參考類別庫 (若不在當前目錄需完整路徑)
// /out:FunctionClient.exe 指定輸出執行檔
csc /out:FunctionClient.exe /R:Functions.dll FunctionClient.cs
> FunctionClient.exe 3 5 10
Function Client Demo
輸入:[3] 數字個數:[1] 階乘:[6]
輸入:[5] 數字個數:[1] 階乘:[120]
輸入:[10] 數字個數:[2] 階乘:[3628800]
.exe 目錄)probing 設定)CORPATH 環境變數指定路徑 (類似 Java CLASSPATH)using Namespace; 導入 → 撰寫呼叫程式碼 → 執行偵錯
// 產生金鑰組
sn -k MyKey.snk
// 組件資訊加入強式名稱 (AssemblyInfo.cs 或專案屬性)
[assembly: AssemblyKeyFile("MyKey.snk")]
[assembly: AssemblyVersion("1.0.0.0")]
// 編譯帶強式名稱的 DLL
csc /target:library /out:Functions.dll /keyfile:MyKey.snk Factorial.cs DigitCounter.cs
強式名稱組件可安裝至 GAC,支援多版本並存、版本原則導向。
csc /target:library 建立 DLL,/out 指定檔名namespace) 組織類別,邏輯分組而非物理部署單位csc /R:Library.dll 參考 DLL,using 導入命名空間CORPATH 可擴展搜尋路徑