.NET 引入新語言 C#、修改作業系統共享程式碼處理方式,根本性改變安裝部署模型。核心在於受管理程式碼與元資料。
每個組件必須包含資訊清單,內容:
資訊清單取代 COM 自我註冊,所有型別資訊內嵌於 DLL/EXE,安裝時無需寫入登錄表,實現 XCOPY 部署 基礎。
誤以為受管理程式碼只需複製檔案即可執行。實際上安裝程式仍需提供:
解決「DLL 地獄」的兩大機制:
| 機制 | 原理 | 優點 | 缺點 |
|---|---|---|---|
| 隔離應用程式 | 應用程式自帶所有組件的隔離版本,不使用共享組件。 | 完全免受其他安裝影響。 | 需重寫程式碼,成本高,磁碟空間佔用大。 |
| Side-by-Side 元件 | 多版本共享組件並存,作業系統依應用程式資訊清單載入正確版本。 | 不需重寫程式碼,共享磁碟空間,WinXP 系統組件已採用。 | 需撰寫應用程式資訊清單指定相依版本。 |
應用程式資訊清單範例:
<assembly>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="5.0.0.0" />
</dependentAssembly>
</dependency>
</assembly>
系統將依清單載入指定版本的 COMCTL32 v5,即使系統存在其他版本。
.NET 透過元資料與組件模型奠定 XCOPY 部署基礎,Side-by-Side 技術解決版本衝突,但完整安裝體驗仍需專業安裝工具支援。開發者應理解組件資訊清單、應用程式資訊清單與版本原則,設計健全的部署策略。