我是.Net开发人员,但我无法保证在目标计算机上安装.Net Framework。
我已经看到一些问题(here和here)建议使用NGen编译为本机代码。两者都指出你仍然需要这个框架。
我想编写一个相当轻量级的应用程序(基本的GUI,没有数据库,没什么复杂的),但出于各种原因,我不想安装任何框架或字节码解释器。
This question建议使用Python和py2exe。我不熟悉Python,但如果它是这项工作的最佳工具,我可能已经足够学习编写这个应用程序(我不想这样做)。我也考虑用DHTML和javascript编写它 - 我可以依赖具有相对较新浏览器的机器。
我熟悉C语言系列,并且涉猎过Java,PHP和Ruby。
有人能推荐一种我可以轻松编译为原生Win32代码的语言吗?
编辑:澄清
有一些答案表明,如果我熟悉C语言系列,为什么不使用C?我应该澄清一下。我每天都使用C#,而且我在C +和C ++上长大(但是已经使用了很多年)。
看起来C / C ++似乎是可行的方法,但我必须刷新它们的记忆:)
答案 0 :(得分:16)
如果它很轻巧而且没什么复杂的,而且你熟悉C语言系列..那为什么不用C和Win32 Api?它比编写.net或java程序更难,但肯定会编译为本机的Windows代码,并且不需要字节码或解释器。
此外,您可以使用Mono将C#应用程序与Mono运行时静态链接。 http://www.mono-project.com/Guide:Running_Mono_Applications
我认为你需要了解C ......还有另一个想法,那就是:Delphi。
还有一些答案答案 1 :(得分:5)
我会尝试用Qt编写C ++ ...我认为这是一个非常重要的学习框架,考虑到它刚刚变成了LGPL。
答案 2 :(得分:4)
如果您愿意考虑一个完全包含在您的安装中的字节码解释器(您提到的python解决方案将会这样做),那么您可以考虑使用Lua和srlua之类的东西。将脚本和解释器捆绑到一个.EXE中。为了使用Lua快速访问GUI,IUP是一个不错的选择,但也有其他GUI框架的绑定。
如果问题更多的是没有很多系统依赖性的干净安装,而不是试图获得没有DLL的单个EXE,那么考虑使用Lua而不用srlua来打包它。它不需要以任何神奇的方式安装,并且可以与脚本以及DLL或脚本形式的任何所需模块一起存在于单个文件夹中。
将C可调用函数绑定到Lua核心很容易,因为作者从一开始就将其设计为嵌入在更大的应用程序中。例如,它只需要几行样板来创建一个用C语言编写的Lua可调用模块,该模块分布在DLL中。
开始使用Lua以及一整套有用模块的简单方法是Lua for Windows项目,该项目为Lua维护一个“包含电池”安装套件。
答案 3 :(得分:4)
Pascal / Delphi可能吗?
实际上,如果你想要兼容性,没有比不使用MFC的Win32应用更好的了。不确定STL是否没有安装VS安装的额外DLL。
另一方面,我记得在安装时看到VC ++可再发行组件等消息丢失,不确定它是否涉及MFC甚至是核心库。最好不要使用MFC。
您可以使用WTL进行GUI,它将编译为您的可执行文件。
答案 4 :(得分:3)
Windows API本身位于C。
如果C不够轻,你可以考虑使用C ++ / MFC,这对于制作简单的GUI程序很有帮助,而你的编码很少。
答案 5 :(得分:2)
对我而言它的powerbasic(www.powerbasic.com)。它编译本机exe(真实的,而不是嵌入编译的字节代码)。语法就像旧的pds或快速基础(但更进一步)。它允许内联汇编程序,面向对象的类(可选,你也可以只执行程序代码)。如果你有c背景,那么坚持下去。如果你喜欢basicy语言,那么pb是不费吹灰之力的。它就像带有字符串的c。除此之外,如果你喜欢pascal,delphi的编译器可以产生本地exes。
-don
答案 6 :(得分:1)
NGen旨在通过编译本机代码来优化.NET代码。您仍然需要.NET框架。此外,NGen在客户端计算机上的安装程序中运行 - 您无法分发本机代码。
创建.NET安装程序项目,该项目将检查框架,并自动安装。
答案 7 :(得分:1)
在不知道你将要编写什么特定类型的应用程序的情况下,确实有点难以说明......但是MFC(如果你知道的话)或普通的C / C ++和Win32 API将是一个合理的选择,根据您提供的信息。
当然,MFC有点陈旧......但是随之而来的是数以万计的应用程序,除了它的瑕疵之外,它确实可以用于多种用途。如果您可以获得Visual C ++ 6.x的副本,那么有很多向导可以帮助您快速获得应用程序。也就是说,我绝对不会建议仅仅为此目的学习MFC。
答案 8 :(得分:1)
按照C / C ++的说法,您可以查看the D programming language。它具有D的大部分优势,包括默认的原生二进制文件,但在功能部门中更接近C#或Java。不幸的是,在工具中,在较小程度上,libs域令人遗憾地缺乏(虽然这种情况正在迅速改变)。
答案 9 :(得分:0)
C ++或VB6都适合你。看看VB6。它非常容易学习,并且很容易用GUI进行GUI。
答案 10 :(得分:0)
我喜欢C ++ Builder。 .NET Framework是由Borland的Visual Component Library中的一些人设计的,所以如果你走这条路,那对你来说似乎很熟悉。
答案 11 :(得分:0)
另一个选择是坚持w / .Net并使用.Net链接器,例如Salamander .NET Linker或Thinstall - 这样你就不必担心客户机上有什么了。