Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C代码是如何编译的?_C#_Compilation_Command Line Interface_Cil - Fatal编程技术网

C# C代码是如何编译的?

C# C代码是如何编译的?,c#,compilation,command-line-interface,cil,C#,Compilation,Command Line Interface,Cil,将C#编译成PE(.exe文件)的过程是什么? 如果我错了,请纠正我: C#被编译成MSIL MSIL被翻译成字节码 当我们启动PE文件时,.NETVM将其转换回MSIL代码并执行它 如果这是正确的,那么这是否意味着当我在文本编辑器中打开PE文件时,是该字节码还是我遗漏了任何其他步骤,比如加密字节码 C#编译器->exe(PE文件)->机器代码 此PE文件是PE头、MSIL指令和元数据 当编译器生成(MSIL)时,它也会生成元数据。MSIL和元数据包含在可传输的PE文件中。此PE文件宿主是.NE

将C#编译成PE(.exe文件)的过程是什么?
如果我错了,请纠正我:

  • C#被编译成MSIL
  • MSIL被翻译成字节码
  • 当我们启动PE文件时,.NETVM将其转换回MSIL代码并执行它
  • 如果这是正确的,那么这是否意味着当我在文本编辑器中打开PE文件时,是该字节码还是我遗漏了任何其他步骤,比如加密字节码

    C#编译器->exe(PE文件)->机器代码

    此PE文件是PE头、MSIL指令和元数据

    当编译器生成(MSIL)时,它也会生成元数据。MSIL和元数据包含在可传输的PE文件中。此PE文件宿主是.NET Framework而不是操作系统。运行PE文件时,此文件将在.NET Framework上运行


    运行.Net PE file->mscorlib.dll->CLR->JIT->Machine Code

    这确实是一个你应该花一点时间在网上搜索的主题。这是一个很好的文档,看看那里你可以看到不同的步骤看起来像什么,MSIL已经是“字节码”。EXE或DLL文件的格式非常灵活,可以存储任意数据。类似于MSIL和.NET程序集所需的元数据。在运行时,MSIL被即时编译器转换为机器代码。所以exe文件只是字节码?所以PE头是纯MSIL字节码?否。PE头在.NET或其他程序集中是相同的。