共用方式為


.NET 組件檔格式

.NET 定義了一種二進位檔案格式 組件,用於完整描述和包含 .NET 程式。 元件用於程式本身及其相依庫。 .NET 程式可以作為一個或多個組件運行,除了適當的 .NET 實作之外,不需要其他必要的工件。 原生相依性項目,包括作業系統 API,是需要個別考量的,並且不包含在 .NET 元件格式內,雖然有時會以這個格式描述(例如 WinRT)。

每個 CLI 元件都會攜帶宣告、實作和該元件特定參考的元數據。 因此,元件特定的元數據被稱為元件元數據,而據說生成的元件是自我描述的——引述自 ECMA 335 I.9.1《元件和組件》。

格式已完整指定並標準化為 ECMA 335。 所有 .NET 編譯程式和運行時間都會使用此格式。 記錄和不常更新的二進位格式的存在,是互作性的主要優點(可以說是需求)。 格式上次以實質性方式在 2005 年更新(.NET Framework 2.0),以容納泛型和處理器架構。

格式與 CPU 和 OS 無關。 它已做為以許多晶元和 CPU 為目標之 .NET 實作的一部分。 雖然格式本身具有 Windows 傳統,但它可在任何作系統上實作。 可以說,它在操作系統互操作性方面最重要的選擇是,大部分的值會以小端格式儲存。 它沒有計算機指標大小的特定親和性(例如32位、64位)。

.NET 元件格式對於指定程式或程式庫的結構有很詳細的描述。 它會描述元件的內部元件,特別是定義的元件參考和類型及其內部結構。 工具或 API 可以讀取及處理此資訊,以顯示或以程式設計方式做出決策。

格式

.NET 二進位格式是以 Windows PE 檔案格式 為基礎。 事實上,.NET 類別庫符合 Windows PE 規範,乍看之下就像是 Windows 動態連結庫(DLL)或應用程式可執行檔(EXE)。 在 Windows 上,這是一個非常有用的特性,他們可以偽裝成原生可執行二進位檔,並取得一些相同的處理(例如,OS 載入、PE 工具)。

組件標頭

ECMA 335 II.25.1 的組件標頭,執行階段檔案格式的結構。

處理元件

可以撰寫工具或 API 來處理組件。 組合語言資訊使執行時能做出程式決策、重寫組合語言、在編輯器中提供 API IntelliSense 以及產生文件。 System.ReflectionSystem.Reflection.MetadataLoadContextMono.Cecil 是經常用於此用途的工具範例。