.NET世界中的静态编译

时间:2009-03-23 00:55:05

标签: .net-3.5 static compilation

我将为拥有WinXP机器的客户端编写一个小型桌面应用程序,他们不会安装.NET框架(至少不适合我)。

所以我的选择仅限于C ++或VB6,两者都不是很好。 我记得当时Mono想出了一个静态编译器,但最近我唯一能找到的就是Miguel de Icaza为了在iPhone上运行应用程序而在游戏引擎上进行静态编译 - 不是我的记住了。

是否有任何产品,免费或商业版本允许我静态编译我的.net 3.5 winform应用程序?

由于

2 个答案:

答案 0 :(得分:11)

您可以尝试使用Remotesoft Salamander.

它完全符合您的要求。

答案 1 :(得分:8)

Mono极大地改进了对Ahead of Time编译(AOT)的支持,假设您愿意/能够定位Mono而不是.Net运行时,应该可以静态编译几乎任何CIL应用程序。

这是否是一个好主意总体上取决于应用程序和你的约束。

例如,Novell现在发布了MonoTouch,这是一个完全AOT编译和链接的CLI实现,允许.Net应用程序(不仅仅是游戏)在iPhone上针对CocoaTouch框架运行。

这些相同的AOT技术可用于编译Winforms应用程序,该应用程序不需要.Net或Mono运行时作为先决条件。有很多与AOT相关的绩效权衡(正面和负面),所以如果没有尽职调查我就不会前进。


编辑:

回应John Saunders关于“为什么不为他们安装它?”的问题。这实际上提出了一个原因,你可能需要AOT编译.. Bootstrappers。

要安装任何东西,您必须运行可执行文件。您可以分发MSI(将隐式启动msiexec.exe),也可以分发exe。 MSI虽然功能齐全,却是一个非常糟糕的开发者体验。因此,您可以使用.NET构建引导程序(AOT编译消除运行时依赖性),在安装应用程序之前安装必要的先决条件(例如.NET)。

此外,一些公司可能需要提供可下载的可执行文件,这些可执行文件不需要用户安装任何内容(无声或其他方式)。

另一个:安装.NET需要管理权限。 AOT可能允许您绕过应用程序的要求。

同样,这些是否是一个好主意完全取决于应用程序和你的约束。