发布的应用程序(windows形式)是机器代码
本文关键字:机器 代码 形式 windows 应用程序 | 更新日期: 2023-09-27 18:14:59
我知道,这个问题对许多人来说可能是一个常见的问题,但我像任何事情一样困惑。我正在用c#阅读。net。我看了很多文章和msdn。我的疑问是:
当我在VS中开发c# Windows窗体应用程序代码并运行它时,项目'bin'Debug'中扩展名为"。exe"的文件是中间代码还是机器代码?当我发布它时,我得到安装程序的那一刻,它是机器码还是中间代码?因为有时安装程序要求安装。net。
请帮助我理解这个概念。谢谢。
编译后的。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
中的可执行文件与您发布应用程序时获得的可执行文件相同,但它们与调试符号链接在一起