是否可以将.NET IL代码编译为机器代码?

lit*_*ter 30 .net compiler-construction visual-studio

我想在没有.NET框架的情况下分发我的.NET程序.是否可以将.NET程序编译为机器代码?

Fly*_*wat 21

是的,您可以使用Ngen.exe进行预编译,但这不会消除CLR依赖性.

您仍然必须运送IL程序集,Ngen的唯一好处是您的应用程序可以在不调用JIT的情况下启动,因此您可以获得真正快速的启动时间.

根据CLR Via C#:

此外,使用Ngen预编译的程序集通常比JIT组件慢,因为JIT编译器可以优化目标机器(32位?64位?特殊寄存器?等),而NGEN只会生成基线编译.

编辑:

CLR Via C#对上述信息存在争议,因为有些人说你只需要在目标机器上运行Ngen作为安装过程的一部分.

  • 乔恩,这取决于.`ngen`可以通过目标机器上的安装过程调用,据我所知,这实际上是针对在.NET中实现的各种Microsoft产品完成的. (3认同)
  • 编辑我的评论:你实际上是错的(我也是如此),`ngen`*有*在目标机器上调用.`ngen`在*machine-local*GAC中安装本机映像!在开发人员的机器上进行预编译将毫无用处. (3认同)

Ore*_*ost 20

Remotesoft有一个: Salamander .NET Linker

虽然我没有任何经验.


Tur*_*key 7

有一些第三方工具可以做到这一点,例如


Jac*_*cob 5

另一个(昂贵的,专有的,许可证起价为1599美元)产品可以做到这一点是Xenocode Postbuild.但是我自己没有使用它,因为它耗费了一个非洲小国的国民生产总值而且全部......