有什么方法可以将 .NET 开发的应用程序转换为本机可执行文件(包括源代码)?
安装整个框架(最高 .NET Framework 3.5 SP1)需要花费大量时间 - 并非总是从 Internet 更新计算机。是否可以调用 NGen 来生成独立的可执行文件?
谢谢
有什么方法可以将 .NET 开发的应用程序转换为本机可执行文件(包括源代码)?
安装整个框架(最高 .NET Framework 3.5 SP1)需要花费大量时间 - 并非总是从 Internet 更新计算机。是否可以调用 NGen 来生成独立的可执行文件?
谢谢
它尚不可用,但 Mono 项目团队正在开发一个Ahead of Time 编译器,它可以满足您的需求。Mono 的目的是在 iPhone(如 Unity)上工作,但它应该适用于所有平台。
编辑:它确实支持 Mono x86,但我不确定他们是否已经包含了包含在依赖类中的功能(尽管从我听说的一次采访中得知,这是计划好的)
编辑 2:目前支持包含依赖项,感谢 Dykam!
不,NGen 的代码仍然需要该框架——它只对您自己的程序集中的代码进行预 JIT。它还需要 CLR 本身的框架。
我相信Mono有一个他们计划用于 iPhone 的静态编译器。我不知道这是否也适用于 Windows。
曾经有一个名为 Thinstall 的产品,有些人用它来做这件事。它现在被称为ThinApp - 基本上它是应用程序虚拟化。它是商业的,但您很可能可以获得试用版。
就我个人而言,我对任何此类产品都有些担心——在部署方面,偏离主流的做事方式听起来像是很多支持电话的秘诀。有很多地方出错了。我并不是说它不起作用,只是我会保持警惕。
您看过.NET 3.5 (SP1) Client Profile吗?这可能有助于稍微降低您的安装要求。
使用 .net 3.5 SP1 可以安装 .net 框架的较小子集。看看这个截图:(
来源:windowsclient.net)
您可以使用 NGen 使您的应用程序成为本机可执行文件,但它仍将依赖于 .Net 框架。
一些混淆器会这样做,但您必须事先进行(在将其发送给用户之前)。一个例子是remotesoft 的 Salamander。
您只需要安装您所针对的 .NET 版本,例如 .NET1.1或.NET2.0
编辑:如果您需要以 3.5 版本为目标,则需要同时安装 2.0 和 3.5
ILMerge(免费)可以将多个程序集合并为一个,但我认为它不适用于核心运行时。
简而言之,我认为如果要运行 .NET 程序,则需要安装 .NET Framework。
有一个商业产品声称可以在这里做到这一点:
http://www.xenocode.com/Obfuscator/
“安全地部署 .NET 应用程序,无需安装 .NET Framework”
不知道这样做的缺点是什么
来自 vmware 的 ThinApp(以前称为 Thinstall)。不过,曾经非常昂贵。
我们在 2007 年为解决这个问题而创建的唯一产品是Xenocode Postbuild。从我们成功使用该产品的那一刻起,我们也使用了它相当不错的虚拟化功能。
唯一的问题是我们购买的版本不支持 Windows 7(您不需要安装 .net 框架来运行使用版本 < 4.0 编译的程序)。所以我写信给 Xenocode。他们回答
为了获得对 Win 7 的支持,您应该升级到最新版本的 Postbuild(现在称为.NET Obfuscator)。Win 7 不是 Postbuild 2007 支持的平台。
为什么不是 Ngen.exe?http://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.80).aspx
如果您拥有 .Net Framework,它也可以转换.Net Programs
为Native Programs
您已经拥有它