15

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

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

谢谢

4

11 回答 11

12

它尚不可用,但 Mono 项目团队正在开发一个Ahead of Time 编译器,它可以满足您的需求。Mono 的目的是在 iPhone(如 Unity)上工作,但它应该适用于所有平台。

编辑:它确实支持 Mono x86,但我不确定他们是否已经包含了包含在依赖类中的功能(尽管从我听说的一次采访中得知,这是计划好的)

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

于 2009-07-27T12:55:15.430 回答
9

不,NGen 的代码仍然需要该框架——它只对您自己的程序集中的代码进行预 JIT。它还需要 CLR 本身的框架。

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

曾经有一个名为 Thinstall 的产品,有些人用它来做这件事。它现在被称为ThinApp - 基本上它是应用程序虚拟化。它是商业的,但您很可能可以获得试用版。

就我个人而言,我对任何此类产品都有些担心——在部署方面,偏离主流的做事方式听起来像是很多支持电话的秘诀。有很多地方出错了。我并不是说它不起作用,只是我会保持警惕。

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

于 2009-07-27T12:54:55.103 回答
6

使用 .net 3.5 SP1 可以安装 .net 框架的较小子集。看看这个截图:( 来源:windowsclient.netVisual Studio 项目属性

于 2009-07-27T13:02:34.310 回答
3

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

于 2009-07-27T12:55:27.833 回答
3

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

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

于 2009-07-27T12:59:56.023 回答
1

一些混淆器会这样做,但您必须事先进行(在将其发送给用户之前)。一个例子是remotesoft 的 Salamander

于 2009-07-27T13:00:19.177 回答
1

您只需要安装您所针对的 .NET 版本,例如 .NET1.1.NET2.0

编辑:如果您需要以 3.5 版本为目标,则需要同时安装 2.0 和 3.5

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

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

于 2009-07-27T13:02:07.163 回答
1

有一个商业产品声称可以在这里做到这一点:

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

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

不知道这样做的缺点是什么

于 2009-11-27T21:20:44.093 回答
1

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

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

于 2010-03-16T15:30:42.190 回答
1

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

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

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

于 2010-05-17T14:21:43.267 回答
1

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

如果您拥有 .Net Framework,它也可以转换.Net ProgramsNative Programs您已经拥有它

于 2012-12-13T15:30:33.237 回答