将.NET可执行文件转换为本机可执

时间:2009-07-27 12:52:19

标签: .net compilation native-executable

有没有办法将.NET开发的应用程序转换为本机可执行文件(包括源代码)?

安装整个框架(最多为.NET Framework 3.5 SP1)需要花费大量时间 - 并非总是从Internet更新计算机。是否可以调用NGen来生成独立的可执行文件?

由于

11 个答案:

答案 0 :(得分:12)

现在还没有,但是Mono项目团队正在研究Ahead of Time compiler,它可以满足您的需求。 Mono的目的是在iPhone上运行(如Unity),但它适用于所有平台。

编辑:它确实支持Mono x86,但我不确定他们是否已经包含了依赖类中包含的功能(虽然从我听过的采访中,已经计划好了)

编辑2:目前支持包含依赖项,感谢Dykam!

答案 1 :(得分:9)

不,NGen代码仍然需要框架 - 它只是在您自己的程序集中预先JIT代码。它还需要CLR本身的框架。

我相信Mono有一个他们计划用于iPhone的静态编译器。我不知道这是否适用于Windows。

曾经有一种名为Thinstall的产品,有些人用它。它现在被称为ThinApp - 基本上它是应用程序虚拟化。这是商业广告,但你很可能能够获得试用版。

就我个人而言,我有点担心任何这样的产品 - 在部署方面,偏离主流的做事方式听起来像是许多支持电话的配方。出现了很多错误。我并不是说它不起作用,只是因为我会保持警惕。

你看过.NET 3.5 (SP1) Client Profile了吗?这可能有助于降低您的安装要求。

答案 2 :(得分:6)

使用.net 3.5 SP1,可以安装.net框架的较小子集。看看这个截图: Visual Studio Project properties
(来源:windowsclient.net

答案 3 :(得分:3)

您可以使用NGen使您的应用程序成为本机可执行文件,但它仍将依赖于.Net框架。

答案 4 :(得分:3)

NGen将exes编译为本地exes,因此它们不需要在运行时进行JIT编译。但他们仍然依赖于框架。

有一些商业公司确实提供了将.net程序集编译成独立版本的产品。 Xenocode和vmware的Thinapp。两者都不便宜。

答案 5 :(得分:1)

有些混淆器会这样做,你必须事先做好(在你把它发送给你的用户之前)。一个例子是remotesoft's Salamander

答案 6 :(得分:1)

您只需要安装您要定位的.NET版本,例如.NET1.1 .NET2.0

修改:如果您需要定位3.5版本,则需要同时安装2.0和3.5

ILMerge(免费)可以将多个程序集合并为一个,但我认为它不适用于核心运行时。

简而言之,我认为如果您想运行.NET程序,则需要安装.NET Framework。

答案 7 :(得分:1)

有一种商业产品声称这样做:

http://www.xenocode.com/Obfuscator/

“安全地部署.NET应用程序,不安装.NET Framework”

不知道这会有什么缺点

答案 8 :(得分:1)

来自vmware的ThinApp(以前称为Thinstall)。曾经非常昂贵。

http://www.vmware.com/products/thinapp/

答案 9 :(得分:1)

我们在2007年为解决这个问题而成立的唯一产品是 Xenocode Postbuild 。从那时起我们成功使用该产品,我们还使用了相当不错的虚拟化功能。

唯一的问题是我们购买的版本不支持Windows 7(您不需要安装.net框架来运行使用版本< 4.0编译的程序)。所以我写信给Xenocode。他们回答了

  

为了获得对Win 7的支持,您应该升级到最新版本的Postbuild(现在称为 .NET Obfuscator )。 Win 7不是Postbuild 2007支持的平台。

答案 10 :(得分:1)

为什么不是Ngen.exe? http://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.80).aspx

它还将.Net Programs转换为Native Programs,如果您拥有.Net Framework

,则已经拥有它