我想在没有.NET框架的情况下分发我的.NET程序。是否可以将.NET程序编译为机器代码?
答案 0 :(得分:20)
Remotesoft有一个: Salamander .NET Linker
我对此没有任何经验。
答案 1 :(得分:20)
是的,您可以使用Ngen.exe进行预编译,但这不会消除CLR依赖。
您还必须运送IL程序集,Ngen的唯一好处是您的应用程序可以在不调用JIT的情况下启动,因此您可以获得真正快速的启动时间。
根据CLR Via C#:
此外,使用预编译的程序集 Ngen通常比JIT更慢 程序集,因为JIT编译器 可以优化目标机器 (32位?64位?特殊寄存器? 等等,而NGEN只会产生一个 基线编制。
编辑:
CLR Via C#对上述信息存在争议,因为有些人说你只需要在目标机器上运行Ngen作为安装过程的一部分。
答案 2 :(得分:7)
有一些第三方工具可以做到这一点,例如
答案 3 :(得分:5)
另一种(昂贵的,专有的,许可证起价为1599美元)产品可以做到这一点Xenocode Postbuild。但是,我自己并没有使用它,因为它耗费了一个非洲小国的国民生产总值而且全部......
答案 4 :(得分:3)
是否可以编译.NET IL代码 机器代码?
是的,但.NET Framework在运行时(默认)或安装时(ngen)为您完成。除了其他原因之外,这个IL - >机器代码在每台安装机器上单独完成,因此可以针对该特定机器进行优化。
我想发布我的.NET 没有.NET框架的程序。 是否可以编译.NET 程序加工代码?
不,出于所有意图和目的,你不能这样做。第三方解决方法可能在某些情况下有效,但到那时我不再认为它是“托管代码”或“.NET”了。
答案 5 :(得分:3)
是的,你现在可以!最近微软发布了 .NET Native ,这是一项将您的应用程序与.NET Native运行时(他们称之为MRT)编译成一个二进制文件(实际上是一个可执行文件和一个动态库)的技术。
查看链接: http://blogs.msdn.com/b/dotnet/archive/2014/04/02/announcing-net-native-preview.aspx http://blogs.msdn.com/b/dotnet/archive/2014/04/24/dotnetnative-performance.aspx
答案 6 :(得分:2)
编译部分有IL2CPU。
答案 7 :(得分:1)
我不认为这是可能的。您可以制作预装配件,但仍需要框架。
答案 8 :(得分:1)
我认为你不应该:这是JIT编译器的任务。
但是,您可以使用ClickOnce或Windows Installer进行部署,以便丢失框架不是一个大问题:您可以告诉安装程序下载框架并安装它。
答案 9 :(得分:1)
如果您只关心部署框架的大小,可以阅读this。
答案 10 :(得分:1)
使用--aot选项查看MONO项目:mono命令。 http://www.mono-project.com/AOT
答案 11 :(得分:0)
我一直认为将c#直接编译为机器代码而没有CLR依赖会很酷....