|
|
1
42
微软有一篇文章描述了你如何 Compile MSIL to Native Code 你可以使用 Ngen .
不幸的是,为了运行程序,您仍然需要框架中的库。我不知道MS.NET Framework SDK有什么功能可以让您将所有必需的文件编译成一个可执行文件。 |
|
|
2
23
RemoteSoft制作了一个工具,它将.NET应用程序编译成一个可以在不安装.NET的情况下运行的包。我对此没有任何经验: |
|
|
3
19
|
|
|
4
18
微软已经宣布 .NET本机预览 这将允许在未安装框架的情况下运行.NET应用程序。 看一看: http://blogs.msdn.com/b/dotnet/archive/2014/04/02/announcing-net-native-preview.aspx 常见问题解答: http://msdn.microsoft.com/en-US/vstudio/dn642499.aspx 您可以从以下位置下载Microsoft.NET Native for VS2013: http://msdn.microsoft.com/en-US/vstudio/dotnetnative |
|
|
5
15
正如这里提到的其他一些答案,您可以使用 .NET Native 工具将应用程序编译为本机代码。不过,与这些答案不同的是,我会解释 怎样 做这件事。 步骤:
就是这样!完成后,您的应用程序将编译为单个二进制文件,如下所示:
它将是一个独立的可执行文件;不包含PDB、程序集或配置文件(hooray!). 或者,如果您想要一个更快的程序,您可以运行它:
这将优化你的程序使用C++代码生成器(而不是RJJIT),所以你的应用程序甚至更加优化的AOT场景。 您可以在dotnet cli上找到更多有关此的信息。 GitHub repo . |
|
|
6
11
是的,使用 Ngen ,本机图像生成器。但是,您需要注意以下几点:
总之,只有在需要缩短应用程序的启动时间时,才有必要使用ngen。 |
|
|
7
10
你可以!但是,您被限制为.NET 1.1(您没有泛型): Mono Ahead-Of-Time compilation (AOT) 然而,这意味着编译实际上是本地的,所以您将无法再部署一个字节码程序集,每个平台需要一个。 它最初的设计是因为iPhone没有.net或Mono,所以他们就是这样制作MonoTouch的。 |
|
|
8
6
您可以使用名为.NET Native的新的预编译技术来实现这一点。在这里查看: http://msdn.microsoft.com/en-US/vstudio/dotnetnative 目前它仅适用于Windows应用商店应用程序。它执行单个组件链接。因此.NET框架库静态链接到您的应用程序中。所有内容都编译到本机,不再部署IL程序集。应用程序不是针对clr运行的,而是一个精简的、优化的运行时,称为托管运行时(mrt.dll)。 如上所述,NGen使用了混合编译模型,并且在动态场景中依赖于IL和JIT。.NET本机不使用JIT,但它支持各种动态方案。代码作者需要利用 Runtime Directives 为.NET本机编译器提供有关其希望支持的动态方案的提示。 |
|
|
9
4
可以使用ngen.exe生成本机映像 但是 您仍然需要分发原始的非本机代码,并且它仍然需要在目标计算机上安装框架。 这并不能解决你的问题,真的。 |
|
|
10
1
.NET的本质是能够安装已编译为MSIL的应用程序,然后通过JIT或NGEN,将MSIL编译为本机代码并存储在本地缓存中。它从来没有打算生成一个真正的本机.exe,它可以独立于.NET框架运行。 也许有黑客这么做,但我觉得不安全。需要框架的动态太多,例如:动态程序集加载、MSIL代码生成等。 |