我有一组相对复杂的 VB6 表单和类需要转换为 VB.NET。这些类跨越 COM 边界是复杂的,提供接口和事件,以及接收来自其他 COM 类的事件。
没有一个类跨 COM 边界编组变体或其他复杂数据类型,所以我不需要尝试对接口做任何真正困难的事情。
有没有可用的工具,免费的或商业的,可以自动化,给定一个 VS2010 的副本和一个装满公用事业钱的钱包,但不是咨询服务?
我有一组相对复杂的 VB6 表单和类需要转换为 VB.NET。这些类跨越 COM 边界是复杂的,提供接口和事件,以及接收来自其他 COM 类的事件。
没有一个类跨 COM 边界编组变体或其他复杂数据类型,所以我不需要尝试对接口做任何真正困难的事情。
有没有可用的工具,免费的或商业的,可以自动化,给定一个 VS2010 的副本和一个装满公用事业钱的钱包,但不是咨询服务?
请在此处查看我曾经问过的与此类似的问题:VB6 code upgrade。查看 Olivier Jacot-Descombes 的回答,他谈到了 Visual Studio 中可用的工具。
我建议重写代码,因为根据我的经验,这是值得的时间。
我有类似的任务要做,对我来说最简单的方法是使用 Visual Studio 2005 中的向导将 VB6 代码升级到 .Net。然后将项目升级到 Visual Studio 2010,然后使用重构工具提取接口。
无需昂贵的第三方工具,尽管您仍然必须手动检查所有接口以确保没有遗漏任何内容。
您显然需要解析 VB6 代码,并提取名称和类型定义。周围没有很多强大的 VB6 解析器。
我们有其中之一,建立在我们的再造工具基础 DMS 之上。您可以将它们作为产品获取,并根据您的目的对其进行配置。VB6 前端提供对所有详细信息的完整 AST 的解析;DMS 提供了用于构建符号表、进行类型分析和支持数据流分析的附加机制,如果您想知道哪些接口使用哪些接口,这可能是您需要的。这不是一件容易的事,因为这些机器相当复杂(因为 VB6 等真正的编程语言很复杂);大多数人对服务更感兴趣,只是为了实现迁移,但情况各不相同。请参阅VB6 迁移工具。(我是 DMS 背后的 CTO)。
您总是可以编写一个 Perl 脚本来尝试提取这些信息。这可能会在 70% 的情况下正确处理;你的精力将花在试图找出哪个 70% 是正确的,如何修补其他 30%。如果您的系统非常小,这可能会更容易。
花钱购买VB Migration Partner或Artinsoft VB Upgrade Companion,让工具转换代码以及提取接口。