是否可以将 .NET 字节代码编译为机器语言?

Is it possible to compile .NET byte code to machine language?

能否将 .NET 字节码直接编译成机器码?

我想这样做是为了提高执行速度。我说的是只编译 CLR 字节码,而不是直接为 C# 或其他东西编译源代码。因此,我可以先将任何 .NET 语言编译为 CLR 字节码,然后在完成所有测试和原型设计之后,再将其编译为机器代码。

是的,这似乎是可能的(我自己从未尝试过),请参阅 C# Native Compiler 项目,它旨在使用 C 将 MSIL 编译为本机,这就是它的工作原理(如该页面所述)。

using System;

public class HelloWorld
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Hello World");
    }
}

假设你保存为helloworld.cs,使用下面的命令编译成native。 (需要安装 MinGW32)

Il2c.exe /exe helloworld.cs /corelib:CoreLib.dll

这应该会创建一个 helloworld.exe 原生文件。

还有一个示例项目使用 C# 本机编译 OpenGL 应用程序,请在此处查看 - Babylon 3D - C#/native port