0

(非常)很久以前我写了一个 VB5 程序,由于某种原因我今天仍在使用。我花了将近 5 年的时间才完成,直到最近我才因为它的年龄而遇到问题。

事实上,只有一个部分给我带来了问题,那就是使用的 Webbrowser Control。webbrowser 控件加载网页(显然),但在过去几年中,越来越多的网站拒绝显示,因为它检测到旧版本的 IE(webbrowser 控件基本上是什么)。取而代之的是,这些网站会显示类似“您正在使用不受支持的浏览器,请更新”的消息。现在我可能可以通过提供现代浏览器的用户代理字符串来绕过这条消息,但是这些网站不再支持 IE 当然是有正当理由的。仅仅是因为 IE 真的无法渲染这些网站。

另一个问题是 webbrowser 控件显然拒绝显示安全站点 (https)。我认为是因为它使用了不再有效的旧证书。

长话短说,目前形式的程序已经到了生命的尽头。重写整个程序对我来说不是一个选择,因为这样做需要时间(可能是几年,因为它确实是一个巨大的程序)而且我根本没有时间去做。所以我猜我有两个选择:使用替代控件(我猜 VB5 不存在)或自动迁移到另一种语言。当然,所有 VB5 源代码都是可用的。

我的问题是,这有可能吗?有什么办法可以让它再次工作吗?有没有人有任何想法?还是我只有两个选择来重写程序或转储它?

4

2 回答 2

0

我不认为使用 VB5 进行更新是可行的,它只用了一年半左右。VB6 具有新的数据控件,并且通常是公司在接下来的几年中努力的方向。

升级到 VB6,然后升级到 VB.Net(可能会升级到 C#,考虑到您的 Perl 和 Php 背景)当然是可能的。做起来有多容易取决于你的程序是如何编写的。如果它在业务逻辑和表单以及类型安全方面得到了很好的分离,那么它可能是相当微不足道的。如果您的显示完全与您的逻辑混为一谈,并且有时将变量用作字符串,有时将其用作整数,有时将其用作变体,那么如果不付费,它几乎是没有希望的。

你说你的程序很大,但你没有给出类或文件的数量,你真的需要知道要做什么以及程序的编写情况如何才能给出粗略的估计。如果复杂性在于业务逻辑,那可以想象,基本上没有变化。

一条建议,一旦你进行转换,立即打开 option infer 和 option strict。此外,在进行转换时不要被大量错误吓倒。通过创建等效于 VB6 的控制数组,它们中的许多可以被整体修复。

于 2020-08-02T23:05:07.223 回答
0

一条评论建议首先迁移到 VB6 ...并使用迁移向导。

但是:您可能会面临迁移向导无法完成的问题,因此您仍有大量工作要做。

再次,但是:几年前(00 年代初)我面临迁移大型应用程序的问题。我们做不到。所以我们创建了一个“混合”应用程序(VB6 和.NET 的一部分)。后来,我们采取了相反的方式:让 .NET 应用程序调用旧的 VB6 窗体/类,但那是几年后的事了。

那么:如何编写一个 .NET 类(比如说,您的浏览器部分所需的完整表单),让这个类/表单 COM 可见,并将其添加到您的 VB6 解决方案中......

如果你试一试,你不会损失太多。

于 2020-07-06T07:47:22.113 回答