CLR在加載程序集的時(shí)候會(huì)查看程序集清單,程序集清單包含哪些內(nèi)容呢?可執(zhí)行文件和程序集有什么區(qū)別/
程序集清單
□ 查看程序集清單
→清空F盤(pán)as文件夾中的所有內(nèi)容→創(chuàng)建MainClass.cs文件→把MainClass.cs編譯成程序集
→反編譯MyDll.dll,在1.txt文件中呈現(xiàn)
→打開(kāi)1.txt文件ildasm /out:1.txt MyDll.dll
1.txt
// Metadata version: v4.0.30319.assembly extern mscorlib{.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z/V.4...ver 4:0:0:0}.assembly MyDll{.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ).custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows..hash algorithm 0x00008004.ver 0:0:0:0}.module MyDll.dll// MVID: {7BE59AA1-0AE6-426E-B77D-5B85AB4B163F}.imagebase 0x10000000.file alignment 0x00000200.stackreserve 0x00100000.subsystem 0x0003 // WINDOWS_CUI.corflags 0x00000001 // ILONLY// Image base: 0x00A00000// *********** 反匯編完成 ***********************// 警告: 創(chuàng)建了 Win32 資源文件 1.res
○ .assembly extern mscorlib,不管MainClass.cs中有沒(méi)有代碼,一定會(huì)引用mscorlib程序集○ .assembly MyDll語(yǔ)句塊中的內(nèi)容就是程序集清單,manifest○ .hash algorithm 0x00008004和.ver 0:0:0:0是程序集清單中2個(gè)重要的方面
□ 查看module清單
→把MainClass.cs編譯成module
csc /t:module /out:MyModule.netmodule MainClass.cs
→反編譯MyModule,在2.txt文件中打開(kāi)
<PRe style="font-size: 11px; font-family: consolas,'Courier New',courier,monospace; width: 100%; margin: 0em; b
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注