写入的dotnet可执行文件是什么语言?

时间:2011-04-07 19:55:11

标签: executable cil .net

我认为这将是普通中级语言,但在记事本中它根本不是那样的。它在现实中看起来比在教程中看起来更丑陋吗?或者它是否是从CIL进一步编译的字节码形式?

3 个答案:

答案 0 :(得分:2)

它是CIL是二进制格式的名称,而不是您正在考虑的“汇编程序”。

你能想象.NET程序集是文本文件吗?

答案 1 :(得分:1)

.NET可执行文件是一个二进制文件,它具有PE标头(与本机可执行文件相同,但值略有不同)。 PE头告诉操作系统加载CLR,CLR又加载程序集。

标题之外的内容是CIL代码的二进制表示,以及一些元数据和其他内容。你在教程中看到的文本是CIL的文本表示,就像你在关于汇编语言编程的教程中看到的汇编语言代码只是二进制机器代码的文本表示一样。

有关详细信息,请参阅http://www.yetanotherchris.me/home/2010/7/12/inside-net-assemblies-part-1.html(以及其他许多内容)。

答案 2 :(得分:0)

.Net可执行文件通常不会编写,它是使用其他语言编译的,例如C#,F#或VB.Net。

可以使用ILDASM工具查看.Net可执行文件的内容。

内容首先是清单,用于反射,签名或其他元代码目的。

其次有MSIL指令本身。这些是一种字节码格式,但ILDASM会告诉你指令是什么。

有时会在可执行文件中包含图像,声音或其他内容等资源。

可执行文件在安装过程中即时编译为本机代码(我认为这不常见),或者作为执行的先驱。可以存储生成的本机代码以供重用。 (这是我在PDC 2001期间被告知的,可能是“过时”。)