当前位置:  开发笔记 > 编程语言 > 正文

.NET应用程序可以编译为本机吗?

如何解决《.NET应用程序可以编译为本机吗?》经验,为你挑选了2个好方法。

只是想知道.NET应用程序是否可以提前编译为本机代码?即使我可以,我也不打算这样做; 我只是好奇.

谢谢



1> Cody Brociou..:

您可以使用NGen提前编译它,但这仍然取决于.NET框架.Remotesoft的Salamander(一个商业应用程序)可以制作一个无框架的应用程序.



2> Jason Short..:

您可以将IL编译为本机二进制文件.有产品可以做到这一点.

更大的问题是你应该......

如果要删除所有dot net依赖项,以便在没有dot net的情况下运行

基本上这些产品正在做的是预编译到机器级别(通常是x86),然后静态地包含exe中所有必需的库.这通常导致巨大的exe.而且,更重要的是,您现在并没有真正拥有目标计算机上的运行时.您拥有本机编译器选择合并的运行时的一部分.

如果你想获得更快的JIT时间

您也可以使用NGen将其编译为本机二进制文件,但您仍然拥有dot net的所有依赖项.目标机器仍然需要框架等.

但是,当你发现你失去了应用程序自动提升高达64位的能力.如果您的应用程序已预编译,则必须强制使用一种模式.如果用户在64位计算机上运行,​​则您的IL代码将被提升(除非您不将其标记).

JIT时间不是大多数应用程序中最大的瓶颈.它是框架库的加载和其他相关要求.

如果您真的需要它,您可以在安装应用程序中获取当前用户目标计算机.

我最近才知道你不能NGEN一个应用程序,并期望它像你可以使用JIT一样利用CPU.当你运行NGEN时总是出于某种原因优化PentiumPro的输出,并且不会利用像SSE,SSE2等的东西.所以我想说将NGEN作为一个合理的使用案例.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有