建立 .NET 組件後,仍需考慮條件編譯、文件產生與版本管理等部署議題。本章詳細說明 C# 預處理器指示詞、條件屬性、XML 文件註解與組件版本控制策略。
C# 無獨立預處理器,但編譯器模擬條件編譯功能。主要指示詞:
#define SYMBOL / #undef SYMBOL:定義/取消符號(必須置於檔案最前,using 之前)。#if / #elif / #else / #endif:依符號條件包含/排除程式碼,支援 &&、||、! 邏輯運算。#warning / #error:產生編譯警告/錯誤,阻止建置。亦可透過編譯器參數定義符號:csc /define:DEBUG;RELEASE program.cs。
[Conditional("SYMBOL")] 標記方法,僅當符號定義時編入組件並保留呼叫,否則移除方法本體與所有呼叫點。限制:回傳型別必須為 void。常用於除錯追蹤、斷言等僅在 DEBUG 建置需執行的功能。
#define DEBUG
using System.Diagnostics;
public class Logger {
[Conditional("DEBUG")]
public static void Trace(string msg) {
Console.WriteLine("[TRACE] " + msg);
}
}
// 呼叫點在 RELEASE 建置會被完全移除
Logger.Trace("進入關鍵函式");
使用 /// 三斜線註解,編譯器可產生 XML 文件檔(/doc:file.xml)。標準標籤:
| 標籤 | 用途 |
|---|---|
<summary> | 類別/成員簡述 |
<param name="..."> | 參數說明 |
<returns> | 回傳值說明 |
<exception cref="..."> | 可能拋出的例外 |
<example> | 使用範例 |
<seealso cref="..."/> | 參考連結 |
/// 計算兩數乘積
/// 第一個數
/// 第二個數
/// 乘積結果
public int Multiply(int a, int b) { return a * b; }
<major>.<minor>.<build>.<revision>(例如 1.2.3.4)。Runtime 強制版本策略:
AssemblyVersion:組件版本(建置時自動遞增 *)。AssemblyFileVersion:檔案版本(顯示於檔案屬性)。AssemblyInformationalVersion:產品行銷版本字串。透過發行者原則組件或應用程式設定檔(<bindingRedirect>)可重新導向版本繫結,解決「DLL 地獄」問題。
條件編譯支援多種建置配置(Debug/Release/Demo),XML 文件註解自動產生技術文件,嚴謹的版本控制確保組件相容與部署彈性。三者結合構建專業的 .NET 專案生命週期管理基礎。