捆绑.NET dll在无.NET的机器上运行应用程序?

时间:2010-03-16 11:05:05

标签: .net deployment runtime base-class-library ngen

AFAIK,ngen将MSIL转换为本机代码(也称为JIT之前的版本),但是我从未过多地关注它的启动性能影响。 Ngen'd应用程序仍然需要.NET base class libraries(运行时)。

由于基类库具有.NET程序集所需的所有内容(正确吗?),是否可以使用我的ngen'd应用程序发布框架的DLL,以便它不需要安装运行时? (例如,大多数Windows XP计算机的方案)

哦,请不要理会Remotesoft's Salamander LinkerXenocode's Postbuild。它们不适合我(和许多人)目前的预算(他们似乎只是简单地将框架捆绑在虚拟环境中,这意味着我认为下载量大,启动时间慢)

编辑:
我现在知道了,根本不做我想的那样 但是可以在不使用VM的情况下将.NET文件与应用程序捆绑在一起吗?

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

查看Microsoft .NET Native

  

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

It will be integrated in Visual Studio 2014

答案 3 :(得分:1)

How to compile a .NET application to native code? - 共识似乎是不可能的。