-
hello.exe
鎖定
hello.exe,一旦安裝了 .NET,您就可以使用記事本或 Visual Studio 創建包含前面的“Hello World”程序之一的文件。創建一個空的子目錄,將文件保存到該子目錄當中,並命名為 hello.cs(CS 表示為 C# 文件)。
- 外文名
- hello.exe
- 步 驟
- 創建一個空的子目錄
- 顯示程序
- 打開命令提示並更改到正在使用
- 執行程序
- 列出目錄的內容
hello.exe顯示程序
打開命令提示並更改到正在使用的目錄。鍵入“csc hello.cs”命令來編譯該程序。如果在目錄中查看,您將發現已經創建了 hello.exe 文件。鍵入“hello”執行該文件,控制枱窗口將顯示“Hello, World!”。
hello.exe執行程序
可執行文件的內容,列出目錄的內容,請注意只有兩個文件:hello.cs 和 hello.exe。Hello.exe 是一個非常小的文件,只有 3 KB 左右。真簡單。
但是,hello.exe 文件中有些什麼?這就不那麼簡單了。有一個存根加載器,即很小的本機機器語言程序,它可加載 .NET Runtime 並給予其控制權以便使它開始執行您的程序。
但是兩個重要的部分是元數據和 IL 中的代碼,元數據向 Common Language Runtime 和可能引用程序中的類型的編譯器解釋該程序。(您可能會想起 IL 是 .NET Runtime 的機器語言。)當 Runtime 即將開始執行每種方法時,它將 IL 轉換為本機代碼,然後執行本機代碼。.NET 從來不解釋 IL,它總是將 LI 編譯成本機代碼。
hello.exe查看程序
如何查看元數據和 IL?使用 IL 反彙編 (ILDASM) 工具會使該操作變得非常簡單。只要在命令提示下輸入圖 “ILDASM hello.exe”(假設 hello.exe 文件在當前目錄下)就可以了。您可以看到一個如下顯示的窗口。
1:ILDASM 窗口
最初,“hello.exe”之下的目錄樹顯示兩個部分:清單和類 MyApp。由於模塊 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}