2012-05-10 65 views
2

所以,我對.NET運行時體系結構和結構感興趣。我想知道它是如何工作的一步一步。我有幾本書,也在谷歌尋找一些答案,但現在,我想正確回答一些問題。.NET CSC.EXE輸出文件格式

在書面的是,CSC.EXE(編譯程序)生成管理模塊書籍,它包含: 1. PE部首 2. CLR部首 3.元數據 4. IL代碼

和編譯後,工具AL.exe(彙編鏈接器)將該模塊合併到彙編中。 我也知道,程序集有兩個主要的文件擴展名:DLL或EXE。

但是,我對託管模塊感興趣。它如何編譯編譯器和文件格式?它是一個.netmodule擴展名嗎? OR DLL?

p.s 對不起,我的英語。

+1

閱讀ECMA335。有趣和信息豐富。 – leppie

+0

http://www.ecma-international.org/publications/standards/Ecma-335.htm –

+1

沒有傢伙。我明白什麼是IL代碼等等。我的問題是關於託管模塊擴展。有時我讀到,模塊和程序集有相同的擴展名(DLL)。有時我讀到,模塊有.netmodule擴展名。有一些模糊性什麼文件擴展名有一個模塊(託管模塊)。 我們知道,託管模塊有4個要點: 1. PE頭; 2. CLR標題; 3.元數據; 4. IL代碼; 但什麼是物理管理模塊。語言編譯器通過高級代碼創建它時有什麼擴展? –

回答

1

託管模塊就像.DLL/.EXE格式(它們都是PE格式,它們包含PE標頭+ CLR標頭+元數據+代碼)。 不同之處在於,如果您正在進行多模塊組裝,則可以創建.netmodule。多模塊程序集是一個內部具有多個模塊的程序集,System.Data.dll就是一個例子,因爲它具有一個託管部分和一個本地C++部分。

.NetModules只是將多個模塊打包到1個裝配中的一種便捷方式。高級編譯器(如C#)不處理它,這就是爲什麼您需要使用Assembly Linker工具(AL)。

希望這會有幫助 謝謝