发布的应用程序(windows形式)是机器代码

本文关键字:机器 代码 形式 windows 应用程序 | 更新日期: 2023-09-27 18:14:59

我知道,这个问题对许多人来说可能是一个常见的问题,但我像任何事情一样困惑。我正在用c#阅读。net。我看了很多文章和msdn。我的疑问是:

当我在VS中开发c# Windows窗体应用程序代码并运行它时,项目'bin'Debug'中扩展名为"。exe"的文件是中间代码还是机器代码?当我发布它时,我得到安装程序的那一刻,它是机器码还是中间代码?因为有时安装程序要求安装。net。

请帮助我理解这个概念。

谢谢。

发布的应用程序(windows形式)是机器代码

编译后的。exe包含MSIL (Microsoft中间语言代码),下面是它是如何发生的(从这里开始):

  • 源代码转换为公共中间语言,CIL相当于CPU的汇编语言。
  • 然后将
  • CIL组装成所谓的字节码形式,并创建。net程序集。
  • 在执行。net程序集时,它的代码将通过运行时的JIT编译器来生成本机代码。也可以使用提前编译,这样可以消除这一步,但代价是可执行文件的可移植性。
  • 本机代码由计算机处理器执行。

当我发布它时,当我得到一个安装程序时,它是机器码还是中间代码?因为有时安装程序要求安装。net。

.net .exe总是MSIL代码,安装程序可能在安装。net框架之前作为应用程序的先决条件。

简化答案:

当我在VS中开发c# Windows窗体应用程序代码并运行它时,项目'bin'Debug'中扩展名为"。exe"的文件是中间代码还是机器代码?

这是IL代码,当你启动。exe

时,它将被。net转换为二进制/机器码。

和当我发布它时,我得到安装程序的那一刻,它是机器码还是中间代码?因为有时安装程序要求安装。net。

一样。发布模式(您应该发布)和调试模式之间的区别在于,前者是优化的,而后者是为了使调试更容易。

它们都是MSIL代码,Project'bin'Debug中的可执行文件与您发布应用程序时获得的可执行文件相同,但它们与调试符号链接在一起