C#中间语言及ILDASM工具用法
当我们编译 .net 应用程序时会发生什么?
当我们编译任何 .net 应用程序时,它将生成一个程序集,该扩展项可以是 。dll 或 。exe。
例如,如果编译窗口或控制台应用程序,则将得到 .exe,而如果编译 web 或类库项目,则会得到 .dll。
不管它是否是 .dll 或 .exe,一个程序集由两个事物组成(清单语言和中间语言)。
了解c#中的中间语言
为了理解 c# 中的中间语言,下面创建一个简单的控制台应用程序。如下所示。
现在,构建应用程序。生成应用程序后,将编译上述源代码,生成中间语言并打包到程序集中。
要查看程序集,只需右键单击"项目"并选择"文件资源管理器中的打开文件夹"选项,然后转到 bin => 调试文件夹,您应该会看到具有 .exe 扩展名的程序集,如下所示,因为它是控制台应用程序。
如何查看 c# 中的中间语言代码?
.net 框架提供了一个名为 ildasm(中间语言肢解)的漂亮工具来查看中间语言的代码。要使用 ildasm 工具,您需要按照以下步骤操作。
在管理员模式下打开可视工作室命令提示符,如下所示。
打开视觉工作室命令提示符后,键入"ildasm.exe c:\您的目录路径\您的组装.exe"命令并按 enter。
在这里,您需要提供生成 exe 的 exe 路径。我的exe在路径"c:\users\zhouh\source\repos\ildasdemo\ildasdemo\bin\debug\ildasdemo.exe"中生成,所以我在命令提示符中执行以下代码:
输入以上命令并按下enter后, 将打开以下 ildasm 窗口。
如您所看到的,程序集由两个事物(清单语言和中间语言)组成。让我们先讨论中间语言代码,然后讨论什么是清单。
现在,让我们扩展 ildasdemo 并将其与代码进行比较。为了更好的理解,请看下图。
ildasm 中存在一个构造函数,这是因为默认情况下,当类中没有构造函数时,.net framework 会提供默认构造函数。
现在,单击 ildasm 窗口中的主方法以查看为 main 方法生成的中间语言,如下所示。
什么是清单?
清单包含有关程序集的元数据,如程序集的名称、程序集的版本号、区域性和强名称信息,如下图所示。
元数据还包含有关引用程序集的信息。每个引用包括从属程序集的名称、程序集元数据(版本、区域性、操作系统等)和公钥(如果程序集是强名称)。
如何更改程序集信息?
还可以使用属性更改或修改程序集清单中某些信息。例如,如果要修改版本号,则需要执行以下步骤。
打开assemblyinfo.cs"属性"文件夹下显示的类文件,如下所示。.net 中的每个项目都有一个属性文件夹。
如何将中间语言代码导出到文本文件?
从ildasm 工具中选择文件菜单选项,然后选择转储,您将看到"转储选项窗口",然后单击"转储选项窗口"上的"确定"按钮,如下所示。
点击确定后,会让指定一个保存路径和填入你需要保存的名称, 最终保存il文件结尾的文件。当使用记事本打开,那么将应该看到程序集元数据和 il 代码。
如何从包含清单和 il 的文本文件重新生成程序集?
如果要从 il 代码重建程序集,则需要使用名为 ilasm.exe 的工具, 如下所示, 输入ilasm.exe 空格+ il文件的地址
按下enter键之后, 中间语言汇编器将把我们的il代码重新构建成程序集,并且在指定的路径生成exe文件。 如下所示:
因此,我们使用ilasm.exe(中间语言汇编器)从包含清单和 il 的文本文件重建程序集。
到此这篇关于c#中间语言及ildasm工具用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: .NET垃圾回收器原理及使用
下一篇: 关于C#中GUI编程的标准事件问题