C#代码是否已编译为本机二进制文件?

Que*_*ueg 12 c# bytecode compilation

我知道Java代码被编译成字节代码,由JVM执行.

C#的情况如何?我注意到用C#编写的应用程序具有.exe扩展名,表示它们是本机机器指令.但它真的如此吗?

SLa*_*aks 18

没有.

与Java一样,C#被编译为中间语言(称为MSIL或CIL).

与Java不同,IL存储在EXE文件中,这些文件具有足够的实际EXE代码,以显示一个对话框,要求用户安装.Net.

  • 毫米。对“是否已编译 C# 代码”说“不”有点令人困惑。显然,它是编译的。进入 CLI 指令。只是不(直接)进入本机代码。显然,无论如何,最终它们_are_(即时)编译为本机代码。 (2认同)
  • 这不是那么简单.有'ngen`和GAC. (2认同)

A D*_*per 6

C#编译分两步完成:

1. Conversion from C# to CIL by the C# compiler

2. Conversion from CIL to instructions that the processor can execute.
Run Code Online (Sandbox Code Playgroud)

组件(及时)在运行时执行从 CIL 到机器代码的编译


Jus*_*yul 6

.exe 应该告诉您的是该文件是可执行的。C# 被编译为字节码,就像 java 一样,但 .NET 将其包装在 CLR 可执行文件中。

在这里查看更深入的 CLR 可执行文件http://etutorials.org/Programming/.NET+Framework+Essentials/Chapter+2.+The+Common+Language+Runtime/2.2+CLR+Executables/


yuk*_*hao 5

c# 代码被编译为 MSIL。它喜欢java字节码。msil 将在运行时转换为机器指令。