vb.net - 将VB6应用程序移植到VB.Net:谁能做到这一点?

标签 vb.net vb6 vb6-migration

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

因此,在与他们多年没有联系之后,他们突然打电话询问我是否可以为他们将应用程序更新到.Net。我最初的反应只是拒绝,因为我不使用VB.Net。在阅读了SO上有关移植等方面的困难的大量文章之后,可以这么说,我什至更倾向于拒绝。

尽管如此,在我告诉他们之前,我没有兴趣大致量化将要付出的努力。我很乐意听到任何做过这种事情并且对自己的工作量有感触的人。是:


明显少于您在原件上花费的精力?
比您在原件上花费的精力少一点吗?
与您在原件上所做的努力一样吗?
更多?
多很多?


如果您确实做了这种端口,请只回复。答案不一定是确切的,因为我确实只是在试图对此加以指责。我的感觉是,这项努力将至少与原始工作一样多,甚至更多。但是我可能是错的。谢谢你的帮助。

最佳答案

我已经完成了您的要求。在我的情况下,这是一个(业余)保龄球比赛mgmt系统:会员数据库mgmt(个人信息,IRS /胜利信息,邮件列表等),比赛mgmt(玩家分配,得分,生成车票,检查注册奖金和边池等),以及给定年份所有获奖者的IRS EDI生成。另外,约有十亿个小物品分散在约50个屏幕/子屏幕中。

关键是客户了解-您必须清楚他们了解这并非无关紧要;这对你们俩都是一次新的冒险(特别是如果您是VB.Net的新手)。如果他们以前喜欢您的工作,那么他们很可能会给您自由/自由的学习VB.Net的经验。

阅读一些以前的答案,让我提出一些建议(基于30年的软件开发人员经验,其中最近20年是顾问....)


如果可以提供,请拿钱。您需要将自己的技能带入20世纪。让他们为此付费(再次同意,如果他们同意的话。)他们可能是在杂志上冲浪,并且想要“最新的东西”以防万一-也许他们意识到可以通过此端口延长(您的)应用程序的寿命。从本质上讲,这样做可能有各种愚蠢的理由……如果他们不雇用您来决定此端口是否是一个好主意。然后,您可能会因为建立良好的客户关系而对决策过程感到沮丧。但是,如果他们想这样做,那么这也许就是您的工作。
把这一切都混在一起:C#vs VB.Net,加一粒盐。自成立以来,我一直在VB.Net/ASPX.net(相对于C#)中进行过专职工作,但尚未遇到VB.Net中无法实现的任何功能。有一些“纯粹主义者”只是将VB.Net视为玩具。好吧,我来自撰写汇编语言的日子,然后是C,然后是C ++(您可以投入使用Fortran,PL1作为很好的工具),然后是VB5,然后是6,然后是VB.Net ...和NOW JAVA for Android。它的所有好玩...各有优缺点。请记住,C#和VB.Net本质上只是实现元语言中间件的GUI。您可以在C#中编写一个TERRIBLE(以效率,内存使用情况或您选择的度量标准衡量!)程序,在VB.Net中编写一个出色的程序(反之亦然。)不要用语言语法等同于良好的编程。 (... C#是“高级” ???? Gimme休息了。)
我选择允许Visual Studio在第一遍完成大部分繁重的工作。然后,您将经历大量错误并加以清理。进行得非常快。
但是您需要确定是否要利用您在VB6中手动编码的任何框架优势。例如。现在,遍历字符串以查找特定字符就像The_String.IndexOf(“ c”)一样简单。我发现在我的情况下,我多次遍历了代码,并更好地利用了Class(即对象)适应性以及框架的优点……这增加了您的开发时间(请参阅“了解客户的要求”),但是您的代码将更加高效,而在VB6中可能更高效。您可以简单地移植以消除错误,而不必从框架中获取任何好处。
我还没有发现任何与第三方active-x控件有关的问题。您可以添加对FRAMEWORK对象,COM对象等的引用。控件供应商甚至可能具有.Net(托管代码)版本...,或者可能有合适的替代方法,因为您是在VB6中编写的。 (请参阅了解客户的口头禅)


因此,如果您仍在阅读,那么现在我终于要告诉您,从VB6转换/移植到VB.Net的我的应用程序中的第二次尝试大约是获得工作模型所需的原始时间的1/3 ...也学习框架。 (如果您对自己的技能有信心,那么多年来,您已经学习了几种语言,那么您很快就会了解VB.Net的要点-它需要一段时间。

我必须告诫您,如果您没有很好地讲授客户理解,那么真正会杀死您的事情是,如果他们想在移植时进行更改(这很可能是因为他们已经使用了一段时间了。 ..我也很真实。

这里没有硬性规定。可能是变更实际上可以帮助您更快地更好地了解框架,否则变更可能是真正的痛苦。只有您可以确定它们可能是哪种口味。并且如果它们看起来是PAINFUL类型-您可能会要求先进行转换,以便可靠地重现功能-然后返回并检查代码以进行更改,并在必要时利用框架。但是,正如我说的那样,这里没有硬性规定-不要让纯粹主义者告诉您不同--请记住,他们可能是说PASCAL将接管世界的同一个人!

关于vb.net - 将VB6应用程序移植到VB.Net:谁能做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435088/

相关文章:

c# - 如何使用 C# 为所有表单创建通用函数?

asp.net - 当第一个单元格为空时 Filehelpers ExcelStorage.ExtractRecords 失败

c# - CodeRush - 执行建议的修复 -(快捷方式)

sql-server - vb6 - 用于 sql server 的 NUMERIC 和 microsoft ole db 提供程序

vba - Excel VBA ADODB 后期绑定(bind)错误

c# - 查找字符串中字符的索引

c# - UBound 数组 vb6 转换为 C#

ms-access - 代码在 DAO 中没问题,但在 ADO 中出现运行时错误 '3021'

vb6 - 如何将 VB 6.0 中的 Application.PrevInstance 转换为 VB.NET?

vb.net - 相当于 "Open fileName For Output As #1"VB6 到 .NET