您可以将IL编译为本机二进制文件。有一些产品可以实现这个功能。更大的问题是,您是否应该这样做...如果您想要删除所有与dot net相关的依赖项以在没有dot net的情况下运行基本上,这些产品正在将代码预编译到机器级别(通常是x86),然后在exe文件中静态地包含所有所需的库。这通常会导致一个非常庞大的exe文件。更重要的是,您现在实际上并没有在目标机器上运行时环境(runtime)。您只有本地编译器选择合并的运行时环境的一部分。如果您只想获得更快的JIT时间您还可以使用NGen将其编译为本机二进制文件,但仍需要所有与dot net相关的依赖项。目标机器仍然需要框架等。但是,当您使用ngen时,您失去了应用程序自动升级到64位的能力。如果您的应用程序已经预编译,您必须强制指定一种模式。如果用户在64位机器上运行您的应用程序,则您的IL代码将被升级(除非您标记它不升级)。在大多数应用程序中,JIT时间并不是最大的瓶颈。最大的瓶颈是加载框架库和其他相关要求。如果确实需要,您可以在安装应用程序中使用ngen来获取当前用户的目标机器。我最近还了解到,您不能NGEN一个应用程序并期望它像JIT一样利用CPU。当您运行NGEN时,它总是为PentiumPro进行优化,原因不明,并且不会利用SSE、SSE2等功能。因此,我认为这就排除了NGEN作为合理用例的可能性。