生活随笔
收集整理的這篇文章主要介紹了
.NET 程序集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
.NET 程序集
一、程序集的功能
1、程序集包含公共語言運行庫執行的代碼(如果可移植可執行PE文件沒有管理程序集清單,則將不執行該文件中的MSIL代碼。每個程序集只能有一個入口,即DllMain、WinMain或Main);
2、程序集形成安全邊界,程序集是.NET代碼請求和授權的單元;
3、程序集形成類型邊界;
4、程序集形成引用范圍邊界,程序集的清單包含用于解析類型和滿足資源請求的程序集元數據,它指定在該程序集之外公開的類型和資源。該清單還枚舉它所依賴的其他程序集。
5、程序集形式版本邊界;
6、程序集形成部署單元;
7、程序集是支持并行執行的單元。
二、程序集內容
1、程序集清單,包含程序集元數據
----程序集清單的內容----
程序集名稱:程序集的名稱
版本號:主版本號和次版本號,以及修訂號和內部版本號
區域性:有關該程序集支持區域性或語言的信息
強名稱信息:如果已經為程序集提供了一個強名稱,則該信息來自發行者公鑰
程序集中所有文件的列表:在程序集中包含的每一個文件的散列和文件名
類型引用信息:運行庫用來將類型引用映射到包含其聲明和實現的文件的信息
有關被引用程序集的信息:該程序集靜態引用的其他程序集的列表。如果依賴的程序集具有強名稱,則每一個引用均包括該依賴程序集的名稱、程序集元數據(版本、區域性、操作系統等)和公鑰
一組可選的由程序集要求或拒絕的安全權限
附屬程序集針對的文化
2、類型元數據;
3、實現類型的MSIL代碼;
4、資源集。
三、使用 Ildasm.exe 命令
命令格式:ildasm [options] [PEfilename] [options]
可用于 .exe、.dll、.obj 和 .lib 文件的選項
選項說明
| /out=filename | 將結果輸出到指定文件 |
| /text | 將結果輸出到控制臺 |
| /html | 以 HTML 格式輸出(僅在與 /out 選項一起使用時有效) |
| /rtf | 以多格式文本輸出(僅在與 /text 選項一起使用時有效) |
| /? | 顯示幫助 |
可用于 GUI 或文件/控制臺輸出的選項(僅限于.exe 和 .dll 文件的選項)
選項說明
| /bytes | 以十六進制格式顯示作為指令注釋的實際字節 |
| /raweh | 以原始形式顯示異常處理子句 |
| /tokens | 顯示類和成員的元數據標記 |
| /source | 將原始源行顯示為注釋 |
| /linenum | 包含對原始源行的引用 |
| /visiblility = vis | 僅反匯編具有指定可見性。 |
| /pobonly | 僅反匯編公共項 |
| /quoteallnames | 將所有名稱用單引號括起來 |
| /noca | 禁止輸出自定義特性 |
| /caverbal | 以文字形式輸出 CA blob |
| /nobar | 禁止反匯編進度欄窗口彈出 |
只對文件/控制臺輸出有效(用于.exe和.dll 文件)的選項
選項說明
| /utf8 | 對輸出使用 UTF8 編碼(默認使用ANSI) |
| /unicode | 對輸出使用 Unicode 編碼 |
| /noil | 禁止 IL 匯編程序代碼輸出 |
| /forward | 使用前向類聲明 |
| /typelist | 輸出完整的類型列表 |
| /project | 如果輸入為.winmd 文件,則顯示 .NET 投影視圖 |
| /header | 將文件頭信息包含在輸出中 |
| /item=<類[::<方法>[(sig)]]> | 只反匯編指定項 |
| /stats | 包括圖像的統計信息 |
| /classlist | 包括在模塊中定義的類的列表 |
| /all | /header、/bytes、/stats、/classlist 和 /tokens 的組合 |
用于 .exe、.dll、.obj 和 .lib 文件的選項
選項說明
| /metadata=mdheader | 顯示元數據頭信息和大小 |
| /metadata=hex | 顯示以十六進制表示的更多內容以及字 |
| /metadata=csv | 顯示記錄計數和堆大小 |
| /metadata=unrex | 顯示無法解析的外部對象 |
| /metadata=schema | 顯示元數據頭和架構信息 |
| /metadata=raw | 顯示原始元數據表 |
| /metadata=heaps | 顯示原始堆 |
| /metadata=validate | 驗證元數據的一致性 |
僅用于 .lib 文件的選項:
選項說明
| /objectfile=<對象文件名> | 顯示庫中單個對象文件的元數據 |
IL指令詳細表參見:http://www.cnblogs.com/knowledgesea/p/5461040.html
四、具有強名稱的程序集
強名稱是由程序集的標識加上公鑰和數字簽名組成的。其中,程序集的標識包括簡單文本名稱、版本號和區域性信息(如果提供的話)。
強名稱是使用相應的私鑰,通過程序集文件(包含程序集清單的文件,并因而也包含構成該程序集的所有文件的名稱和散列)生成的。
總結
以上是生活随笔為你收集整理的.NET 程序集的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。