NGEN是否使用将.NET代码编译成运行代码时不需要安装.NET框架的二进制代码?

StackOverflow https://stackoverflow.com/questions/3173116

  •  02-10-2019
  •  | 
  •  

我在Wikipedia文章上阅读了以下有关CLR的文章:

或者,使用本机image Generator(NGEN),可以在运行时在单独的步骤中将CIL代码编译为本机代码。由于不再需要CIL到本地的编译,因此这会加快该软件的所有速度。

这是否意味着我可以采用任何.NET程序并将其编译为二进制程序,然后将其运行在没有安装.NET框架的机器上?

有帮助吗?

解决方案

不。

这意味着在运行代码时,您不需要运行JIT(即时)编译器,因为它已经由NGEN转换为机器代码。生成的二进制文件仍然对.NET框架具有依赖性,并且必须单独安装在机器上。

有一些工具包装.NET框架组件,并以.NET框架不需要的方式将它们包含在您的二进制文件中。查看 http://www.xenocode.com/. 。 VMware购买了一个名为Thinstall的工具,我认为这也可以做到这一点: http://www.vmware.com/products/thinapp/.

其他提示

阅读 MSDN页面 对于ngen所说的:

ngen.exe创建本机映像,该图像包含包含编译的处理器特定机器代码的文件,并将其安装到本地计算机上的本机映像缓存中。运行时可以使用缓存中的本机映像,而不是使用“ Just-time(JIT)编译器”来编译原始组件。

意思是(对我来说)NGEN只是按照JIT编译器所做的工作并保存结果。关于二进制文件中的.NET Runtimes,它没有说什么。

“不编译您的代码。它在静态上没有将整个.NET框架链接到其中。

但是,单声道 有一个可以执行此操作的静态编译器和链接器。例如,这就是Mono的iPhone支持如何工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top