【问题标题】:Differences between migrating from vb6 to vb2005, vb2008, vb2010从 vb6 迁移到 vb 2005、vb2008、vb 2010 的区别
【发布时间】:2010-05-28 13:00:05
【问题描述】:

我拥有vb2005专业版。 我需要将一个 vb6 项目迁移到 vb.net 迁移到这些的努力有什么不同吗 vb.net 的版本 谢谢

【问题讨论】:

    标签: vb.net vb6 vb6-migration


    【解决方案1】:

    我认为定位到更高版本会稍微容易一些。我相信 PowerPack 3.0 是为 Visual Studio 2005 添加的:它包括对模拟 VB6 Printer 对象和形状控件的额外支持。


    任何阅读过我关于 VB6 迁移的其他答案的人现在应该停止阅读,因为我之前已经说过了……但我认为它是相关的,所以我还是会再说一遍。

    查看 Microsoft UK advicescreencast,解释 .Net 迁移的 5 个基本选项。决定哪个是最好的。人们may 建议您在.Net 中从头开始重写。对此要小心——你说你的代码库很大,这是重写的危险信号。微软英国say

    对 .NET 进行完全重写要比转换成本高得多,而且很难做好[比转换]……我们只在少数情况下推荐这种方法。

    【讨论】:

    • 谢谢马克。实际上,到目前为止,我对取得的进展感到非常鼓舞。我能够去除 135 个 Klines,在剩余的大约 6K 上使用升级向导并立即编译(带有一些警告)!然后我添加了一个处理打印的模块,我将不得不在此处进行一些重写,因为 vb2008 不喜欢打印机的 hdc 属性。我一次想出一个文件,这看起来可行!我很失望,尽管在 vb.net 中打印看起来比 vb6 更像是一个 PITA。我正在使用 vb2008 express,因为 vb2010 没有升级向导。
    • @bosco。您是说您能够删除 135 条 Klines 不必要的代码吗?哇!剩下的任务听起来确实可行:升级一个在升级向导之后编译的 6 Kline 程序。干得好!
    • 不! :) 所有对表单的调用都是通过“Junction”模块中的函数完成的。例如 Public Sub FormFooCall(byVal Action as string) Action = UCase(Trim(Action) If Action = UCase(Trim(("Visible = True")) then ReferenceFormFoo0: frmFoo.Visible = True end if End Sub So 通过注释掉所有此模块中 ReferenceForm 的实例除 StartUp 表单外,项目中的所有表单都被注释掉,项目仍将在 vb6 中编译。一旦表单消失,任何模块都可以删除,因为它们仅从表单中引用所以我仍然需要把它们都塞回去!
    • @bosco 啊。在这种情况下,我仍然建议您查看我的回答中的 Microsoft 建议。有几种不同的迁移途径,通过向导一次性升级所有内容(正如您所做的那样)只是一种选择。例如,您可以将原始 VB6 项目拆分为组件并一次升级一个组件。这使您可以零碎地完成任务。
    • 感谢 MarkJ,已决定在内置升级向导的帮助下迁移到 vb2008。根据我所阅读的内容,我对它的期望并不高,但至少对于我的代码,我发现它是一个相当不错的帮助。
    【解决方案2】:

    我目前正在重写很多 VB6,到目前为止我发现以前的开发人员必须使用很多第三方和自定义模块来实现他们需要的东西,而其中很多已经包含在.Net 的基类库。

    据我所知,从一个迁移到另一个没有简单的方法。这些迁移付出了很多努力。最好考虑的是,您是想逐行尝试还是检查代码、记录核心功能、评估软件在其生命周期内的运行情况,然后进行新设计。

    这就是我最终所做的,因为要重写一行几乎是不可能的,而且非常痛苦。将库和模块编译到 COM 中以将功能带入 .Net 应用程序需要付出很多努力,并且是一种“McGyver”方法。这就是为什么我只是很好地记录了所有内容,理解了过程,然后编写为 .Net 软件。

    具体来说,您要维护什么功能?你以前用 .Net 写过吗?

    【讨论】:

    • 是的,我希望很多变通办法的需求会随着以后的版本减少。我想维护所有功能,这个项目需要在未来持续发展。迁移的很大一部分动机来自学习/使用更新工具集的愿望。 OTOH 对于完全重写来说有点大(140 kloc)。我希望从不引用任何其他文件的文件开始一次迁移一个文件,并在移动到下一个文件之前至少编译代码。我希望升级工具能做很多事情。
    • 这是一个很好的开始,祝你的项目好运。如果可能的话,我会从一个较小的项目或一些代码演示开始学习 .Net,而不是像那样进行大型重写。如果该软件仍然可以达到其目的并且不需要改进,那么我会保留它。这只是我的看法。为什么要为了学习一个框架而重写 140k 行的东西?
    • jlafay 的评论是对的。 Microsoft 的建议是先从一些小项目开始,然后再尝试迁移大型项目。如果不先学习框架,就无法进行良好的迁移。
    【解决方案3】:

    根据我的经验,“迁移”实际上是一种重写,因此您使用的 Visual Studio 版本没有任何区别。我会使用最新的。

    【讨论】:

    • 唯一的问题是vb2010没有升级向导。
    猜你喜欢
    • 2022-11-18
    • 1970-01-01
    • 2011-08-18
    • 2010-09-11
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多