C#中间语言及ILDASM工具用法

 更新时间:2022年01月30日 16:08:56   作者:痕迹g  
这篇文章介绍了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工具用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C#实现根据实体类自动创建数据库表

    C#实现根据实体类自动创建数据库表

    本文主要介绍了C#通过自定义特性实现根据实体类自动创建数据库表的方法。具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • C# AutoMapper 使用方法总结

    C# AutoMapper 使用方法总结

    这篇文章主要介绍了C# AutoMapper 使用方法,文中讲解非常细致,代码帮助大家更好的理解学习,感兴趣的朋友可以了解下
    2020-06-06
  • c#实现把汉字转为带田字格背景的jpg图片

    c#实现把汉字转为带田字格背景的jpg图片

    这篇文章主要介绍了c#实现把汉字转为带田字格背景的jpg图片示例,需要的朋友可以参考下
    2014-03-03
  • C#计算2个字符串的相似度

    C#计算2个字符串的相似度

    这篇文章主要为大家详细介绍了C#计算2个字符串相似度的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • C#如何根据Model字段名称自动匹配并替换值

    C#如何根据Model字段名称自动匹配并替换值

    这篇文章主要为大家详细介绍了如何使用 C# 反射机制实现一个灵活的模板引擎,能够根据 Model 字段名称自动匹配并替换模板中的占位符,需要的可以了解下
    2025-04-04
  • C#实现BBcode转为Markdown的方法

    C#实现BBcode转为Markdown的方法

    这篇文章主要给大家介绍了关于C#实现BBcode转Markdown的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-02-02
  • C#学习笔记——基本语法

    C#学习笔记——基本语法

    本文给大家详细介绍了C#的基本语法知识以及一些基础知识的汇总,非常的简单基础,有需要的小伙伴可以参考下
    2017-02-02
  • 基于WPF平台使用纯C#实现动态处理json字符串

    基于WPF平台使用纯C#实现动态处理json字符串

    在当今的软件开发领域,数据的交换与存储变得愈发频繁,JSON作为一种轻量级的数据交换格式,在 WPF平台开发的桌面应用里,我们常常需要与各种数据源交互,动态处理JSON字符串就成为了一项必备技能,本文将深入探讨如何在 WPF 平台上,仅使用纯C#代码实现对JSON字符串的动态处理
    2025-01-01
  • c#中利用Tu Share获取股票交易信息

    c#中利用Tu Share获取股票交易信息

    这篇文章主要介绍了c#中利用Tu Share获取股票交易信息,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • C#确保只有一个实例在运行的方法

    C#确保只有一个实例在运行的方法

    这篇文章主要介绍了C#确保只有一个实例在运行的方法,涉及C#进程操作的相关技巧,需要的朋友可以参考下
    2015-05-05

最新评论