日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

CLR via C# 3 读书笔记(2):第1章 CLR执行模型 — 1.2 将托管模块组合为程序集

發布時間:2025/1/21 C# 92 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CLR via C# 3 读书笔记(2):第1章 CLR执行模型 — 1.2 将托管模块组合为程序集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實際上,CLR直接打交道的是程序集,而不是模塊。程序集是一個抽象的概念,首先,它是一個或多個模塊或資源文件的邏輯組合(即程序集由多個模塊和資源文件組成)。其次,它是復用、安全、版本的最小單元。根據所選擇的編譯器和工具的不同,可以生成單一文件或多個文件的程序集。在CLR世界里,程序集就是我們稱作組件(component)的東西。

程序集提供了一種方式,將一組文件看作一個單獨的實體。

下圖解釋了什么是程序集。

在該圖中,使用工具對托管模塊和資源(或數據)文件進行處理。該工具生成了單一的PE32(+)文件,代表文件的邏輯組合。該PE32(+)文件包含一個叫做manifest的數據塊。manifest是另一個元數據表的集合。這些表描述了組成程序集的文件、由這些文件所實現的公有導出類型、以及與程序集相關的資源或數據文件。

默認情況下,編譯器會將產生的托管模塊轉換為一個程序集。也就是說,C#編譯器生成的是一個包含了manifest的托管模塊。其中的manifest表明程序集僅包含一個文件。對于僅包含一個托管模塊且沒有資源(或數據)文件的項目來說,程序集就是托管模塊,并且在創建過程中,不需要執行其他操作。如果希望將一組文件組合到一個程序集之中,需要使用更多的工具(assembly linker,AL.exe)及其命令行選項。

對于一個可重用、可部署(securable)、可實施版本管理(versionable)的組件來說,程序集可以將邏輯表示和物理表示相分離(解耦)。如何將代碼和資源放置于不同的文件則完全取決于我們自己。

一個程序集的模塊還包含被引用的程序集的一些信息(如其版本號)。這些信息使程序集能夠自描述(self-discribing)。換句話說,為了執行程序集中的代碼,CLR可以確定程序集的直接依賴。(the CLR can determine the assembly’s immediate dependencies in order for code in the assembly to execute)不需要再在注冊表或活動目錄領域服務(Active Directory Domain Services)中獲取更多的信息。由于不再需要額外的信息,因此部署程序集比部署非托管組件要容易得多。

總結

以上是生活随笔為你收集整理的CLR via C# 3 读书笔记(2):第1章 CLR执行模型 — 1.2 将托管模块组合为程序集的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。