C# 已发布的应用程序(windows窗体)是否为机器代码?

C# 已发布的应用程序(windows窗体)是否为机器代码?,c#,.net,intermediate-language,C#,.net,Intermediate Language,我知道,这个问题对许多人来说可能是一个常见的问题,但我像任何事情一样感到困惑。我正在用c#阅读.net。我看了很多文章,也看了msdn。我的疑问是: 当我在VS中开发C#Windows窗体应用程序代码并运行它时,Project\bin\Debug\中扩展名为“.exe”的文件是中间代码还是机器代码?当我发布它的时候,当我得到一个安装程序的时候,它是一个机器代码还是一个中间代码?因为有时安装程序需要安装.net 请帮助我理解这个概念 谢谢。它们都是MSIL代码,Project\bin\Debug中

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

当我在VS中开发C#Windows窗体应用程序代码并运行它时,Project\bin\Debug\中扩展名为“.exe”的文件是中间代码还是机器代码?当我发布它的时候,当我得到一个安装程序的时候,它是一个机器代码还是一个中间代码?因为有时安装程序需要安装.net

请帮助我理解这个概念


谢谢。

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

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

编译后的.exe包含
MSIL
(Microsoft中间语言代码),下面是它的发生方式(从):

  • 源代码被转换为公共中间语言,CIL相当于CPU的汇编语言
  • 然后将CIL组装成所谓字节码的形式,并创建.NET程序集
  • 在执行.NET程序集时,其代码将通过运行时的JIT编译器来生成本机代码。也可以使用提前编译,这消除了此步骤,但以可执行文件的可移植性为代价
  • 本机代码由计算机的处理器执行
当我发布它时,当我得到一个安装程序时,它是机器代码还是中间代码?因为有时安装程序需要安装.net


.Net
.exe
始终是
MSIL
代码,安装程序可能在安装.Net framework之前将其作为应用程序的先决条件

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

  • 源代码被转换为公共中间语言,CIL相当于CPU的汇编语言
  • 然后将CIL组装成所谓字节码的形式,并创建.NET程序集
  • 在执行.NET程序集时,其代码将通过运行时的JIT编译器来生成本机代码。也可以使用提前编译,这消除了此步骤,但以可执行文件的可移植性为代价
  • 本机代码由计算机的处理器执行
当我发布它时,当我得到一个安装程序时,它是机器代码还是中间代码?因为有时安装程序需要安装.net

.Net
.exe
始终是
MSIL
代码,安装程序可能在安装.Net framework之前将其作为应用程序的先决条件

简化答案:

当我在VS中开发C#Windows窗体应用程序代码并运行它时,Project\bin\Debug\中扩展名为“.exe”的文件是中间代码还是机器代码

它是IL代码,当您启动.exe时,它将被.NET转换为二进制/机器代码

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

同样的事情。发布模式(您应该发布)和调试模式之间的区别在于前者经过优化,而另一种模式则使调试更容易。

简化答案:

当我在VS中开发C#Windows窗体应用程序代码并运行它时,Project\bin\Debug\中扩展名为“.exe”的文件是中间代码还是机器代码

它是IL代码,当您启动.exe时,它将被.NET转换为二进制/机器代码

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


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

所以当我双击发布的.exe代码时,MSIL由CLR执行?我的意思是,当我给某人我的安装程序时,他们应该使用CLR(.NET)来运行安装程序?您需要.NET来运行应用程序,但安装程序不需要.NET。您可以使安装程序包含.NET framework,以便与应用程序一起安装。因此,当我双击发布的.exe代码时,MSIL由CLR执行?我的意思是,当我给某人我的安装程序时,他们应该使用CLR(.NET)来运行安装程序?您需要.NET来运行应用程序,但安装程序不需要.NET。您可以使安装程序包含.NET framework,以便与应用程序一起安装。