将VB6应用程序移植到VB.Net:任何人都可以知道这是多少努力?

时间:2010-03-12 19:04:55

标签: vb.net vb6 vb6-migration

2002年,我为客户做了一个非常大的VB6应用程序。它使用了很多UserControls和第三方菜单控件(用于在菜单名称旁边放置图标)。它具有动态“可拆分”面板,具有多状态复选框的TreeView等。非常丰富的UI。我在这个项目上的总时间大约是500个小时,客户慷慨地让我在上整整一个月。 (是的, 那种工作。)他们非常高兴,他们按时付账,没有争吵。

因此,在多年没有与他们联系之后,他们突然打电话并想知道我是否可以为他们更新应用程序.Net。我最初的反应就是拒绝,因为我不使用VB.Net。并且已经阅读了大量关于移植等困难的帖子,我甚至可以说更多倾向于拒绝。

然而,在我告诉他们之前,我并不感兴趣大致量化它所需要的努力。我很乐意听到任何做过这种事情并且感觉自己有多少工作的人。是吗:

  • 显着低于你原来使用的努力?
  • 比您在原作中使用的努力少一点?
  • 与你在原作中使用的努力相同吗?
  • 更多?
  • 还有很多?

如果您确实已经完成了这种端口,请回复。答案不一定非常准确,因为我真的只是试图将其解决。我的感觉是,努力将至少与原始的努力一样多,如果不是更多的话。但我可能是错的。谢谢你的帮助。

7 个答案:

答案 0 :(得分:9)

答案 1 :(得分:4)

  

所以在多年没有与他们联系之后,他们突然打电话,想知道我是否可以将应用程序更新为.Net。

你需要问为什么他们希望这样做。

对于客户一时兴起做出技术决策,这是一个糟糕的计划(tm)。在应用任何解决方案之前,请彻底了解他们的需求和问题。只有在您了解问题后,才能提出建议。

可能是他们迷恋上了一个流行词,想要使用最新的东西,或者它可能是其他任何一件事。他们的问题的解决方案可能非常简单,但如果你不知道他们的问题是什么,你永远不会知道解决这个问题的最佳方法。

答案 2 :(得分:3)

我会计划在第一时间花费大约50%的时间和精力来创建它。

我已经完全了解了您所要求的商业软件产品,其中包含大约500 kloc。我们将重构的愿望与希望尽快获得工作和释放的愿望相平衡。

整个团队花了大约1年的时间才完成它......对于一个需要4年时间才能创造出来的产品。这是一项巨大的任务......不容小觑。

答案 3 :(得分:2)

我们现在正在做那件事,但它有点不同。而不是一个巨大的应用程序,有许多较小的应用程序。但是,列表中有一些更大的。我们发现它的工作量远远低于我们原先的想法。但是......最大的未知因素与我们拥有的第三方控制有关。如果你有很多基本上重新设计,你可能会看到更多的工作。

我的一个好建议是使用Visual Studio 2008进行转换(不是VS 2005)。在VS 2008中使用内置转换器的问题比使用VS 2005时要少得多。不知道为什么,就是这样。

所以,我不能说你不会再花500小时,但很可能不会。大部分时间都应花在测试上,以验证功能是否丢失。

答案 4 :(得分:2)

在我看来,

Visual Basic 6和Visual Basic .NET是如此不同,你应该忘记他们的名字巧合,并将其视为向.NET = P的迁移

我认为你有一大优势和一个劣势:

  • 优势:您已经知道应用程序必须执行的操作。可能会与您的客户进行一些会议,以便添加一些修改或新功能,但您的要求非常明确。当您或您的团队正在编码时,您甚至可以查看旧的工作应用程序。

  • 缺点:您必须学习一门新语言。说要花多少时间,是非常主观的。我总是认为学习一门新语言不是问题,如果你必须学会​​编程,那就是大问题!但你知道要编程。你知道自己想做什么,而且你只需要在新的语言中搜索如何做到这一点。

由于你必须学习.NET,如果你必须估计,我认为你应该假设它将至少与之前的应用程序相同,甚至更多。

我的建议也是抓住机会学习这门新语言。如果你更倾向于拒绝这个项目,让我再给你一个想法...也许你可以估计一下你的应用程序的一个小模块,并告诉客户你会尝试做那个模块,看看它有多少带给你。即使您决定不继续,客户也应支付这个小模块。

您无法告诉客户您知道所有要求,因此他们会以某种方式与您一起存钱。并且他们应该承担这个小风险(我们正在谈论一个小模块),因为谁比你更好地完成项目,你完全了解旧应用程序!

如果客户端对此是正确的,您可以使用更多参数做出决定。如果最终你决定继续,完成这个小模块,你可以比以前更好地估计整个项目。

对不起,我的英语不是很好,可能我犯了许多错误。

编辑语法错误...... = P

答案 5 :(得分:1)

这次我要去两个月。

但严重的是,这可能并不遥远 - 甚至很低 - 因为客户端会有一些原因需要端口完成。它不仅仅是一个直接的端口 - 它们需要一些“小小的增强”,这将会影响整个项目。

此外,我会担心第三方控件。其余的大多数都应该转换好,但有时候在.Net中找到与第三方控件相似的问题。

我也担心你不使用vb​​.net。如果你是一个c#用户并且希望以这种方式重新实现你就可以了,但是否则这是一个非首发。 VB.Net与vb6完全不同,让你自己陷入困境。

除此之外,我希望这次工作比上次更少,因为你面前有一个非常明确的设计,你只需要遵循。

答案 6 :(得分:1)

这是一个很大的话题。

你应该看看MS'Free Book - Upgrading Microsoft Visual Basic 6.0 to Microsoft Visual Basic .NET

如果你要从头开始重写,而不是简单地尝试移植以前的应用程序,它不应该花太长时间。 VB.Net有一些功能可以使新的应用程序构建更短。由于您似乎不了解VB.Net,最需要花时间学习如何做事新方式(tm)