AFAIK,ngen将MSIL转换为本机代码(也称为JIT之前的版本),但是我从未过多地关注它的启动性能影响。 Ngen'd应用程序仍然需要.NET base class libraries(运行时)。
由于基类库具有.NET程序集所需的所有内容(正确吗?),是否可以使用我的ngen'd应用程序发布框架的DLL,以便它不需要安装运行时? (例如,大多数Windows XP计算机的方案)
哦,请不要理会Remotesoft's Salamander Linker或Xenocode's Postbuild。它们不适合我(和许多人)目前的预算(他们似乎只是简单地将框架捆绑在虚拟环境中,这意味着我认为下载量大,启动时间慢)
编辑:
我现在知道了,根本不做我想的那样
但是可以在不使用VM的情况下将.NET文件与应用程序捆绑在一起吗?
答案 0 :(得分:5)
你不能这样做。许多基本组件(如垃圾收集器)都是CLR(它是框架运行时的一部分)的一部分,因此为了成功执行您的应用程序,您需要安装框架。
答案 1 :(得分:2)
这不是Ngen的工作方式。它只绕过JIT编译步骤。生成的.ni.dll文件仅包含机器代码,而不包含程序集的元数据。您需要保留原始组件。并且CLR和.NET框架程序集必须在目标计算机上可用,需要您安装.NET。
答案 2 :(得分:2)
.NET Native将C#编译为执行类似C ++的本机机器代码。 您将继续受益于生产力和熟悉度 .NET Framework具有出色的本机代码性能。
答案 3 :(得分:1)
见How to compile a .NET application to native code? - 共识似乎是不可能的。