用C#編寫的代碼經C#編譯器后,并非生成本地代碼而是生成托管代碼。也就是說,程序集在打包時是連同CLR一起打包的。在客戶端的機器上,CLR一行行的讀取IL,在讀取每行IL時,CLR利用JIT編譯器將IL編譯成本地的CPU指令。若要節省這段JIT編譯器進行編譯的時間,可以利用ngen.exe生成程序集的本機鏡像,生成的本機鏡像保存在全局程序集(GAC)的一塊保留區域內。
?????? 下面舉個例子,進行簡單說明。打開VS2005,新建一個windows應用程序,命名為AP。在添加兩個類庫項目,分別命名為A和B,且進行強命名。
?????? 在命令提示行內打入如下,命令就可以創建本機鏡像:
?????? ngen AP.exe
?????? "A, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5
",
?????? "B, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5
"
?????? 之后,打開“控制面板”—“管理工具”—“microsoft .net framework 2.0 配置”在程序集緩存的節點下就可以看到AP.EXE,A.DLL,B.DLL三個程序集,其類型顯示也不再是MSIL而是X86。