Microsoft 已弃 FoxPro,FoxDev 让它重生
Microsoft killed FoxPro in 2007. Anyway, here's FoxPro revived

2007 年 Microsoft 停止支持 Visual FoxPro 后,无数遗留项目面临困境。FoxDev Studio 的出现改变了这一切,它无需重写或转换,直接运行你多年未动的 Visual FoxPro 9 项目。这款工具不仅完美复刻了原有的 IDE 体验,更将底层架构升级至 64 位,彻底打破了 2GB 文件限制。通过 Rust 编写的虚拟机和 WebAssembly 技术,它让旧代码在现代机器上流畅运行,同时保留了对 32 位库的兼容。无论是表单、报表还是数据库,一切如你所忆,甚至还能通过 FoxScript 扩展 Web 功能,让老代码焕发新生。
FoxDev Studio 打开你已有的项目、表单和表,以你记忆中的方式运行它们:无需重写,无需转换,也无需导出步骤。
HN 评论区
250- ksec
我知道仍有一些利基行业,其行业标准程序是用 Visual FoxPro 编写的,我记得在 2019 年疫情前他们还在用。(编辑:我刚才打电话确认了,截至 2026 年他们仍在使用。)
这虽然是利基市场,但绝非小生意,单品年营收超过 4 亿美元,整个行业加起来轻松超过 20 亿美元。
没坏就别修。而且有些行业在软件方面极其保守,只要能跑,他们就会一直用下去。
我过去曾为我们没有更好的东西来替代这些古董软件而感到难过。现在我反而开始欣赏它们了,主要是因为新软件根本没表现出能增加任何价值,而且大多数时候它们根本没那么好用。
Delphi、Visual FoxPro、Visual Basic、Flash。我曾经以为总有一天我们会有一种替代品,不仅更快、更简单、更具可扩展性。结果一切都变得更技术化、更复杂、更企业化,也更不友好。
最后,感谢项目作者制作了它。
- mikestew
我反对以任何形式复兴 FoxPro 的原因在于:数据库容器(DBC)的设计存在巨大的安全漏洞。为了让 DBC 有用,它们必须对所有用户开放读写(没有任何权限方案)。DBC 包含存储过程,可以运行任何 FoxPro 代码,包括从 FoxPro 运行时发起的 Win32 调用。这些存储过程以纯文本形式存储在“备注”字段中。你看出问题在哪了吗?只要懂一点技术,就可以把那个 INSERT 触发器改成任何你想要的东西。编辑:由于数据库只是文件系统中的文件,可以用文本编辑器进行修改,从而绕过 FoxPro 运行时的任何检查。FoxPro 只是执行它找到的东西。
我的建议是尽快抛弃 DBF/DBC 文件,迁移到某种 SQL 数据库。如果你有源代码,请使用 ODBC 或 OLE DB 指向服务器。
来源:我曾在 Fox 团队工作时,在 20 多年前提交过这个漏洞报告。不,除非重写数据库引擎的大部分工作,否则这个问题无法修复。
- progmetaldev
2006 年,我曾与一家医生诊所合作,那里的首席医生用 Visual FoxPro 拼凑了一套患者跟踪系统。那简直是个怪物,通过网络驱动器使用它会导致各种文件锁定问题,以及多人修改同一记录的问题(通常是医生和前厅工作人员在办理患者出院时)。
我终于说服医生切换到基于 .NET WinForms 和 ASP.NET RPC 调用的正规客户端/服务器架构。所有问题都消失了,我甚至允许员工编辑界面,将对他们最重要的内容置顶,方法是用 XML 构建实验室测试表单,让他们可以移动 X/Y 坐标到想要的位置。这甚至不是我想到过的功能,只是医生在研究技术并弄懂了其工作原理(幸运的是业务逻辑和安全性都在服务器上,所以恶意行为者只能破坏他们自己的本地应用副本)。
- networkOne
天哪,真是回忆杀。那是当程序员的黄金时代……每家企业都需要一个数据库来处理他们简单的日常琐事,编码简直易如反掌(只是一堆 CRUD 流程),这对客户带来的改变简直是天壤之别……因此,你可以漫天要价。
我用 FoxPro 写了一个简单的 CRUD 应用,面向加拿大房地产评估市场,耗时大约一个兼职月,第一年就以每个 299 美元的价格卖出了 300 个许可证。
啊,怀念那个更简单的时代。
- neilv
回忆杀。当我还是个青少年时,dBase 和 Fox 产品是我第一个有偿软件开发项目,它们对孩子们来说竟然意外地容易上手。
我原本只负责组装电脑家具,也许安装一些联网的 Unix 和 PC 软件,但我妈妈工作的那位退役海军陆战队员认为我有潜力。“嘿,小子”,他会说,“我们需要修改这个 dBase 车队保险数据库以支持更多车辆;搞定它。”“这是 C 数据库库和 Microsoft C 的手册,我正在评估;搞定它。”“我们需要在会计系统之间迁移;这是目标架构的示例 .DBF,这是如何从旧小型机生成完整转储的方法,用这个叫 Emacs 的编辑器清理转储以便导入,一旦你搞定架构映射;搞定它。”我也买了一个旧版的 dBase 产品,后来又买了一个 Fox 产品放在家里,并弄懂了如何构建一些更高级的系统。
(然后我继续工作,有一段时间,所有雇主要么让我搞定某事,要么对我很快搞定某事感到惊喜,这多亏了那些“搞定它”风格的导师对我的塑造。后来我休整了一段时间去补正式学位,但在那之后,当我再次面试时却感到惊讶,因为面试突然变得像 Leetcode 一样,他们似乎不再想让我“搞定它”,而是想要一场排练好的仪式表演,符合大企业认可的一套规则,显然那位海军陆战队员并没有写一本书来对抗这种趋势 […])
- kstrauser
嘿,我最近才提到过这个!我过去的一个奇怪成就就是写了一个小工具 [0],用来将 Visual FoxPro 数据库文件转换为 PostgreSQL,作为迁移工作的一部分。有一段时间,我们不得不把它作为 cron 任务运行,这样人们可以在旧的 VFP 应用中进行数据录入,而其他人则可以在我们基于 PostgreSQL 后端的 Web 应用上运行快速报表。这并不完美,但效果很好,帮助我们摆脱了那个古老的栈。
- EvanAnderson
低入门门槛、高开发人员生产力,以及生成的应用程序具有“量身定制且高度符合专有业务流程”的特性,这些都很酷,但天哪,当这些系统超出了底层平台的能力时,情况就糟糕透了。
一想到企业试图通过当今各种糟糕的覆盖网络技术(这已成常态)在“网络驱动器”上访问 DBF 文件,我就瑟瑟发抖。无缝远程访问应用程序正是 Visual FoxPro 应用失败的地方。
这看起来挺酷,但我真不想在实际工作中围绕它构建应用。如果能透明地塞入一个客户端/服务器数据库,那就酷了。
- NoelJacob
请别再用 AI 写评论了,看得人头疼。就用你自己能写的简单两句话,或者如果你懒得打字,直接语音输入也行。