8

AFAIK,ngen将 MSIL 转换为本机代码(也称为 pre-JIT),但我从未过多关注它对启动性能的影响。Ngen 的应用程序仍然需要 .NET基类库(运行时)。

由于基类库拥有我们的 .NET 程序集所需的一切(对吗?),是否可以将框架的 DLL 与我的 ngen 应用程序一起提供,以便它不需要安装运行时?(例如,大多数 Windows XP 机器的场景)

哦,请不要提及Remotesoft 的 Salamander Linker或Xenocode的 Postbuild。它们不适合我(和许多人)当前的预算(而且它们似乎只是将框架捆绑在虚拟化环境中,这意味着我认为下载量很大并且启动时间很慢)

编辑:
我现在知道,ngen 并没有像我想象的那样做。
但是是否可以在不使用 VM 的情况下将 .NET 文件与应用程序捆绑在一起?

4

4 回答 4

5

你不能做这个。许多基本组件,例如垃圾收集器,都是 CLR 的一部分(它是框架运行时的一部分),因此为了成功执行您的应用程序,您需要安装框架。

于 2010-03-16T12:17:06.107 回答
2

看看Microsoft .NET Native

.NET Native 将 C# 编译为与 C++ 类似的本机机器代码。您将继续受益于 .NET Framework 的生产力和熟悉度以及本机代码的出色性能。

它将集成在 Visual Studio 2014中。

于 2014-09-04T04:52:03.697 回答
2

这不是 Ngen 的工作方式。它只绕过 JIT 编译步骤。生成的 .ni.dll 文件仅包含机器代码,不包含程序集的元数据。您需要为此保留原始程序集。并且 CLR 和 .NET 框架程序集必须在目标机器上可用,需要您安装 .NET。

于 2010-03-16T11:50:33.393 回答
1

请参阅如何将 .NET 应用程序编译为本机代码?- 共识似乎是这是不可能的。

于 2010-03-16T11:15:16.083 回答