hello.exe

hello.exe

hello.exe,一旦安裝了 .NET,您就可以使用記事本或 Visual Studio 創建包含前面的“Hello World”程式之一的檔案。創建一個空的子目錄,將檔案保存到該子目錄當中,並命名為 hello.cs(CS 表示為 C# 檔案)。

顯示程式

打開命令提示並更改到正在使用的目錄。鍵入“csc hello.cs”命令來編譯該程式。如果在目錄中查看,您將發現已經創建了 hello.exe 檔案。鍵入“hello”執行該檔案,控制台視窗將顯示“Hello, World!”。

執行程式

執行檔的內容,列出目錄的內容,請注意只有兩個檔案:hello.cs 和 hello.exe。Hello.exe 是一個非常小的檔案,只有 3 KB 左右。真簡單。

但是,hello.exe 檔案中有些什麼?這就不那么簡單了。有一個存根載入器,即很小的本機機器語言程式,它可載入 .NET Runtime 並給予其控制權以便使它開始執行您的程式。

但是兩個重要的部分是元數據和 IL 中的代碼,元數據向 Common Language Runtime 和可能引用程式中的類型的編譯器解釋該程式。(您可能會想起 IL 是 .NET Runtime 的機器語言。)當 Runtime 即將開始執行每種方法時,它將 IL 轉換為本機代碼,然後執行本機代碼。.NET 從來不解釋 IL,它總是將 LI 編譯成本機代碼。

查看程式

如何查看元數據和 IL?使用 IL 反彙編 (ILDASM) 工具會使該操作變得非常簡單。只要在命令提示下輸入圖 “ILDASM hello.exe”(假設 hello.exe 檔案在當前目錄下)就可以了。您可以看到一個如下顯示的視窗。

1:ILDASM 視窗

最初,“hello.exe”之下的目錄樹顯示兩個部分:清單和類 MyApp。由於模組 hello.exe 有一個清單,所以我們知道它就是程式集的說明檔案。在這種情況下,程式集僅包含一個模組檔案 hello.exe。

清單

雙擊清單將看到元數據的一小部分,這部分說明了這個程式集(應用程式或組件)中包含的模組(檔案)。對於第三個 hello.exe 程式,它看起來如下:

.assembly extern mscorlib {

.originator = (03 68 91 16 D3 A4 AE 33 )

.hash = (52 44 F8 C9 55 1F 54 3F 97 D7 AB AD E2 DF 1D E0

F2 9D 4F BC )

.ver 1:0:2204:21

}

.assembly hello as "hello" {

// --- 下面的自定義屬性是自動添加的

// 不要取消注釋 -------

// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(bool,

bool) = ( 01 00 00 01 00 00 )

.hash algorithm 0x00008004

.ver 0:0:0:0

}

.module hello.exe

// MVID: {59365AA0-B469-4359-9BAF-4840A9257C61}

這個元數據聲明程式集 hello 的版本為 0.0.0.0,包含模組 hello.exe,並且使用 1.0.2204.21 版本的 mscorlib 程式集(.NET Runtime 主 DLL)。模組版本標識符 (MVID) 是一個包含此版本模組 hello.exe 的 ID 的全局唯一標識符 (GUID)。

相關詞條

相關搜尋

熱門詞條

聯絡我們