【问题标题】:Is there any VB6 to C# migration tool? [closed]有没有 VB6 到 C# 的迁移工具? [关闭]
【发布时间】:2010-09-15 19:53:13
【问题描述】:

有谁知道从 VB6 代码转换为 C# 的方法?

有什么工具可以帮我做这个吗?

我可以遵循任何迁移过程来执行此操作吗?

【问题讨论】:

  • 我知道结束一个问题很容易,但帮助他也不是那么难。我敦促您考虑下次提供帮助而不是关闭。
  • 没有理由结束这个问题,即使答案是否定的。
  • 我相信问题是“有人知道从 VB6 代码转换为 C# 的方法吗?”
  • @Seba:是的,这并不难弄清楚。有些人需要对以英语为第二语言的人多一点宽容。
  • @Mark:谢谢。我认为对于我们这些拥有超过 2000 名代表的人来说,帮助那些在英语或提问方面有问题的人是很容易的。在这种情况下,关闭根本不合适。

标签: c# vb6 porting vb6-migration


【解决方案1】:

VisualStudio 提供(或至少提供)一个向导来进行从 VB6 到 VB.NET 的转换(然后可以通过一些工作将其转换为 C#,这可能得益于#develop's VB.NET C# 转换器( /p>

【讨论】:

  • 该产品由 ArtinSoft(现为 Mobilize.Net)创建,并演变为 VBUC。
【解决方案2】:

这可能会让人觉得有点厚颜无耻,但你的大脑可能是最好的工具。 可能值得重写。

也许你不需要移植它。 VB6可以变成COM组件吗? 端口到 COM,从 C# 调用,及时回到 Judy 法官的家。

【讨论】:

  • “[...]及时为 Judy 法官回家”无价之宝!
  • +1 表示将其转换为 COM。
【解决方案3】:

作为一个做过很多次的人,这不是一个容易的过程。您可以使用this answer 中所述的VB6 到VB.Net 工具,然后使用Reflector 或SharpDevelop 转换为C#。对于 SharpDevelop 转换,有一些注意事项。它搞砸了所有的数组引用,并认为它们是函数调用,并且所有逻辑运算符都转换为按位逻辑运算符(并且变成 & 而不是 &&)。使用 Reflector,您会丢失很多东西。此外,Visual Studio 转换器在很多大型项目上都失败了,只是挂起并且永远不会完成。

将代码转换为 C# 后,您必须开始真正的工作。转换最多可以让你完成 50% 的工作,你必须修复大量的东西(你会看到你的代码中到处都是 TODO),重构大量的东西,最后你只剩下 C# 了VB6 的表示——除非你有非常好的 VB6 代码,而不是你真正想要的地方。此外,您的所有代码都充斥着 VB 帮助程序,而不是使用适当的 DotNet 函数(所有字符串函数都是帮助程序而不是类对象,例如 0。如果您使用变体,所有这些都必须重写。如果您使用很多 API 调用,它们往往需要重写。

最终你会得到一个基础,但是转换一个大型项目(20-30 个表单、30 个类、30 个模块)可能需要几个月的时间。但是,从头开始重写可能需要两倍的时间,并且您会丢失所有业务逻辑。所以,它是可以做到的(我已经用 3 或 4 个大型项目做到了),但没有灵丹妙药,没有灵丹妙药,任何说它可以单独为你做的工具都是在撒谎。

【讨论】:

  • 如果你真正的工作只有在代码转换为 c# 时才开始,你为什么不把它留在 vb.net 中呢?进行成本效益分析的人员是否做出了明智的决定?
  • 哦,如果你只转换成 VB.Net 有很多工作要做,但是如果你要转换成 C#,在 VB.Net 中做这些工作是没有意义的,修复它使用您计划最终使用的语言。我们将一些项目从 VB6 移植到 VBNet,但我们的开发人员在 C# 方面的工作效率要高得多。
【解决方案4】:

使用新版本的 Visual Studio 打开您的项目,将您的代码转换为 VB.Net,然后下载 .Net Reflector 以帮助您进行 C# 转换。

祝你好运!

【讨论】:

  • 这个答案具有误导性,因为从 VB6 的转换充满了行为的细微和总体变化。不要这样做。最好有一个有条不紊的转换计划,将 .NET 视为一个单独的平台,然后依赖任何转换工具。
  • 然而,我相信这是一个更好的方法,只是有一个方法......
  • 祝你好运是对的!对于任何非平凡的程序来说,中奖的机会都比用这种方法产生任何有用的东西要大。 :)
  • .Net Reflector 在从 VBNet 到 C# 的转换过程中表现不佳,该过程创建了大量的标签、goto 等。使用语义转换器(如 CSharpDeveloper 中的转换器等)要好得多。
【解决方案5】:

Artinsoft(现在重命名为Mobilize.Net)就是这样做的,特别是Visual Basic Upgrade Companion。

但是,即使在使用 VBUC 之后,系统的某些部分仍然需要手动迁移/校对。但它通常是原始问题的一小部分。由于过去的迁移经验,一些迁移​​问题已得到解决。

Artinsoft 是在 theraccoonbear 的帖子中提到的构建 Visual Studio 附带的向导的同一家公司。但是,如果我没记错的话,向导只会将 VB6 迁移到 VB.Net。

完全披露:我为 Artinsoft 工作

【讨论】:

  • 埃斯特班。 vbuc 可以在文件上运行的次数是否有限制?我指的是您网站上的此声明“许可是每个应用程序,允许在相同的 VB6 文件上多次运行 VBUC。”
  • 如果我没记错的话,您基本上会受到时间限制(通常为 1 年),在此期间您可以迁移任意多次。一旦您开始实际执行,许可证本身就非常宽松。在大多数情况下,ArtinSoft 只依赖于客户按照许可条款正确行事。
  • 感谢 Esteban 提供的信息,这听起来比我给出的建议要严格得多。
  • Artinsoft 现在为其产品提供免费许可证,能够升级 10,000 行代码artinsoft.com/…
  • 然而,还有另一项可用的服务将 VB6 代码转换为 C#。 SELISE Phoenix 为使用它的公司提供服务(功能齐全的转换代码)和转换后支持。 phoenix.selise.ch
【解决方案6】:

简短的回答是 VB6 和 VB.NET(以及因此 C#)是独立的语言,但相关的语言。两个平台之间存在许多细微的差异(Integer 是 Int32 而不是 Int16)和严重的差异(图形、表单和打印引擎)。您需要将此视为您正在转换到一个完全不同的平台。

【讨论】:

    【解决方案7】:

    【讨论】:

    • 第二个比第一个效果好
    • 这两个都不能转换 VB6 代码
    【解决方案8】:

    微软推荐ArtinSoft’s Visual Basic Upgrade Companion (VBUC)。

    Microsoft 和 ArtinSoft 合作为您提供免费的 VBUC 许可证。下面的折扣代码可用于购买许可证,允许您将多达 10,000 行 VB6 代码的应用程序免费迁移到 VB.NET 或 C#。它也可以在购买更大的许可证时应用。

    它并不完美,生成的代码在编译之前仍然需要大量手动修复,但这个工具仍然值得一试。

    【讨论】:

      【解决方案9】:

      要问自己的一个问题是,拥有 C# 而不是 VB.NET 有多重要?如果您正在转换一个大型应用程序,也许您应该升级到 VB.NET,这样会更便宜。

      VB6 中的一些功能在 C# 中没有完全等效的功能(错误处理、后期绑定等)。问问自己为什么值得手动转换它们,当您可以转到支持它们的 VB.NET 时。

      如果你不相信我(没有人投票支持我的答案,呜呜呜!)也许你会相信同意我的Francesco Balena 和 Dan Appleman(在一本书中Moving to VB.NET)。

      【讨论】:

        【解决方案10】:

        在 GreatMigrations,我们是手工完成的——我们亲手开发了一个 VB6/COM 编译器。编译器读取一个 VBP(或一组相关的 VBP)和引用的 COM 库并构造一个“语义模型”。该模型是一组极其详细的符号表和操作码流,可以完整准确地描述源系统定义的所有信息结构和执行的操作。

        该工具随后会应用一系列算法来修改和重组模型,使其与 .NET 更兼容,并可选择应用自定义转换;例如用 .NET 类替换 COM 组件。转换规则由人设计并“手工”创建以满足他们的独特要求。

        最后,模型被“执行”了,但不是分配数据模型和执行操作,而是以目标平台的符号编写文件结构、数据模型和操作。我们可以使用这种方法编写 VB.NET 和 C#。我们还使用此过程将 ASP 站点迁移到 ASPX,(我们还有多方言 FORTRAN-to-C 产品)

        该方法不会在第一次尝试时产生生产就绪的软件,但可以通过修改工具的配置并重新运行翻译过程来改进并制作“更好”的软件。我们工具的优势在于它的可重复性、速度和灵活性,这有助于敏捷的工具辅助重写方法。 IMO,利用我们的方法的迁移团队将受益于分配更多资源来评估重新设计和开发过程改进的替代方案,而不是重新收集功能需求、手工编码和测试。他们最终将享受到更易于维护的系统和迁移后更忠实地再现原始应用程序功能,以及在迁移过程中获得更好的控制和可见性。

        我们的工具的试用版可在此处gmStudio Trail Request Download 获得。它将允许您试验高达 10K LOC 的 ASP/VB 代码并运行多达 30 个会话。

        【讨论】:

        • 试用版提供的相当无用,而且不容易看出该产品是否为 VB6-clueless 转换器提供任何有价值的东西......
        猜你喜欢
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-09
        • 1970-01-01
        • 2011-04-03
        • 1970-01-01
        • 2018-05-18
        相关资源
        最近更新 更多