Visual Basic 6.0 转换工具比较
这里是否有人使用以下任一工具(或任何其他工具)将您的 vb6 代码转换为 .net 语言?
Artinsoft 的升级伴侣 (转换为 c# 和 vb.net)
vbmigration 合作伙伴 (转换为 vb.net)
他们的效率如何以及您的项目规模有多大转变?
之后还有多少工作要做? 您对最终的 .net 项目有多满意? 支持情况如何? 是否有任何地方为此类工具的用户提供支持论坛,也没有 供应商似乎提供了一种。
他们收取什么费用,他们的价格没有公布,我从不同来源听说上述两个例子的价格相差很大
Has anyone here used either of the following (or any other tool) to convert your vb6 code to a .net language?
Artinsoft's upgrade companion (converts to c# and vb.net)
vbmigration partner (converts to vb.net)
How effective were they and what size project did you convert?
How much work was left to do afterwards?
How happy are you with the resultant .net project.
What was the support like?
Is there a support forum anywhere for users of tools like these, neither
vendor seems to offer one.
What did they charge, their prices are not published and I have heard wildly differing prices from different sources for both the above examples
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我是 Eugenio La Mesa,Code Architects 的总经理。 我读了一些关于我们的 VB 迁移合作伙伴和转换工具的评论,并认为我可以添加一些希望有用的提示。
首先,我们的转换软件确实支持所有 VB6 图形属性和方法 - 除了 DrawMode 和 ClipControls 之外。 我们甚至支持 AutoRedraw 属性和用户定义的 ScaleMode 坐标,因此我们的软件完全可以将类似 CAD 的程序迁移到 VB.NET。 www.vbmigration.com 上的代码示例部分包含许多图形密集型 VB6 应用程序的示例,这些应用程序已轻松转换为 .NET。
其次,让我澄清一下我们的价格结构。 我们销售两种不同版本的 VB Migration Partner:专业版可以转换最大 VB6 应用程序。 50,000 行代码,而企业版没有大小限制,并支持一些额外的高级功能,例如与源代码控制软件集成以及生成与原始 VB6 DLL 二进制兼容的 .NET 组件,这使您可以实现基于 N 层 COM 的应用程序的分阶段迁移。
专业版的价格为 399 英镑,是截至 2009 年 6 月 30 日 Microsoft 英国营销活动期间的特别促销活动,仅适用于英国且适用于最多 50K 行代码 (LOC) 的应用程序。 企业版的价格可能会有所不同,因为它取决于多个因素,包括许可证数量和要迁移的 LOC 数量。 这解释了为什么您可能会看到不同的报价。 此外,我们最近还略微降低了标价,作为对经济形势的回应。 我们还计划从主要产品中剔除一些功能并单独提供,这将带来更灵活的价格结构。
老实说,对于具有 25-50K LOC 的应用程序,我们通常建议手动重写。 事实上,我们的重点是企业细分市场,您经常会发现 VB6 应用程序具有数十万甚至数百万个 LOC。 在这些情况下,手动重写很少是一个可行的选择:它需要太多熟练的 VB6/.NET 开发人员,需要太长时间,或者成本太高。 我们最近发布了一个与 650K LOC 应用程序相关的案例研究; 我们的一位客户目前正在迁移一个包含大约 1500 万个 LOC 的怪物应用程序!
I am Eugenio La Mesa, general manager at Code Architects. I read a few comments on our VB Migration Partner and conversion tools in general, and thought I might add some hopefully useful hints.
First, our conversion software does support all VB6 graphic properties and methods – with the only exception of DrawMode and ClipControls. We even support the AutoRedraw property and user-defined ScaleMode coordinates, therefore the migration of a CAD-like program to VB.NET is quite in the reach of our software. The Code Sample section at www.vbmigration.com contains many examples of graphic-intensive VB6 apps that have been converted to .NET with minimal effort.
Second, let me clarify our price structure. We sell two different editions of VB Migration Partner: the Professional Edition can convert VB6 apps with max. 50,000 lines of code, whereas the Enterprise Edition has no size limitation and supports a few additional advanced features, such as integration with source code control software and generation of .NET components that are binary-compatible with the original VB6 DLL, which allows you to implement staged migrations of N-tiered COM-based applications.
The price of the Professional Edition for £399 is a special promotion up to June 30th 2009, during a Microsoft UK marketing campaign, for UK only and for applications up to 50K lines of code (LOCs). The price of the Enterprise Edition may vary because it depends on several factors, including number of licenses and number of LOCs to be migrated. This explains why you may see different price quotations. Also, we have recently slightly decreased the list price as our answer to the economic situation. We are also planning to take a few features out of the main product and offer them separately, which would result in a more flexible price structure.
Quite honestly, for applications with 25-50K LOCs we usually recommend a manual rewrite. In fact, our focus is on the enterprise market segment, where you often finds VB6 apps with several hundred thousand LOCs, if not millions. In those cases, a manual rewrite is seldom a viable option: it requires too many skilled VB6/.NET developers, it takes too long, or just costs too much. We have recently published a case study related to an application with 650K LOCs; one of our customers is currently migrating a monster app with about 15 million LOCs!
我想您已经看到了关于工具的问题将 VB6 迁移到 VB.NET。
两家公司均已在 Microsoft UK 基本产品针对英国市场的特别优惠价格“nofollow noreferrer”>页面。 当然,您需要了解基本产品的局限性以及您所在市场的价格才能做出现实的判断,因此您可能确实需要联系他们:(
内置的 Microsoft 升级向导很可怜 - 根据写它的人的说法 - 当然他来自 Artinsoft,所以他想卖给你更好的东西。 Microsoft UK 还说 Artinsoft 和 Code Architects 工具比内置升级更好向导。
编辑:我联系了代码架构师获取报价,他们回复得非常快。 与此 Stack Overflow 问题 作者:愤怒的黑客,他的经历更糟糕。 但随后 Francesco Balena 突然出现在 Stack Overflow 上,并在 12 小时内回答了他的问题,这更令人鼓舞。
I think you've already seen the question about tools for migrating VB6 to VB.NET.
Both have published special offer prices for the UK market on their basic products on this Microsoft UK page. Of course you need to know the limitations of the basic products and the prices for your market to make a realistic judgement, so you probably do need to contact them :(
The built-in Microsoft upgrade wizard is pathetic - according to the guy who wrote it - of course he is from Artinsoft so he wants to sell you something better. Microsoft UK also say the Artinsoft and Code Architects tools are better than the built-in upgrade wizard.
EDIT: I contacted Code Architects for a quote, they responded very fast. Unlike this Stack Overflow question by Angry Hacker who had a worse experience. But then Francesco Balena popped up on Stack Overflow to answer his question within 12 hours, which is more encouraging.
“升级”VB6 到 .NET 是一个用词不当。 您获得的只是 .NET 中的 VB6 代码; 通常,您可以通过重构/重新架构获得更好的结果 - 例如,使用不同的类模型。 例如,也许设计为可单元测试。 或者使用 IoC。
如果您只是想让代码正常工作(并且您确信可以测试它),那么没问题。
就我个人而言,我会认真考虑更多的手动端口。 而且我有很多遗留的 VB6 代码,所以我知道其中的痛苦。
每次我们遇到这个问题时,我们都会简单地用 C# 重新编写它 - 作为一种方法,它已经多次证明了自己。
实际上 - 我推荐 Brownfield 应用程序开发 (Manning) - 它可能会提供一些有价值的见解在开始之前就位。
"updrading" VB6 to .NET is a misnomer. All you get is VB6 code in .NET; generally you can get much better results with a refactor/re-architecture - using a different class model, for example. Perhaps designing to be unit-testable, for example. Or using IoC.
If you just want the code to work (and you're confident you can test it), then fine.
Personally, I would seriously consider a more manual port. And I have a lot of legacy VB6 code, so I know the pain involved.
Every time we've faced this, we've simply re-written it in C# - as an approach, it has proven itself many times over.
Actually - I recommend Brownfield Application Deveopment (Manning) - it may give some valuable insights on things to have in place before you start.
问题是转换工具不提供对 VB6 图形命令或 VB6 打印机模型的支持。 另外,在处理 ActiveX 控件时,您会遇到很多极端情况。 我知道我们自己的 CAD/CAM 应用程序无法使用任何转换工具进行转换,因为 UI 中内置了许多调整,以使其能够与 VB6 表单引擎顺利工作。
这些是转换工具无法完成的事情,因为 WinForm 引擎需要它自己的调整。 当我们的软件从 DOS 迁移到 VB3 时,也经历了同样的事情。 有时手动转换是无可替代的。
话虽如此,您可以采取一些措施来使转换变得相当容易。 首先确保您的应用程序是分层构建的。 通过这种方式,您可以一次转换一层,进行测试并继续。 它还具有在每一步都为您提供可用软件的优点。 我建议从顶层(表单)开始,然后逐步向下。
确保以 VB6 为中心而不是以 Basic 为中心的任何内容都位于界面后面。 几年前,当 .NET 首次出现时,我创建了一个 Canvas 界面,并使用 VB6 图形命令实现了它。 我在 VB.NET 中使用相同的 Canvas 接口,只不过现在它使用图形对象。 打印机也是如此。
几乎所有代码都从我们的表单移至表单调用的类中。 表单本身实现了 UI 类使用的接口。 当我们切换到 .NET 时,我们对表单如何与系统的其余部分交互有了精确的定义,并且表单转换变得相当容易。
所有这些步骤均在 VB6 中完成,并完成我们正常的发布问答流程。 然后我们就开始了转换。
The problem is that the conversion tools don't offer support for the VB6 Graphics commands or the VB6 printer model. Plus you get into a lot of corner cases when dealing with ActiveX controls. I know our own CAD/CAM applications won't translate over with any conversion tools as a lot of tweaks are built into the UI to make it work smoothly with the VB6 Form Engine.
These are things that conversion tools fail on as the WinForm Engine requires it's own tweaks. The same thing was experienced when our software moved from DOS to VB3. Sometimes there is no substitution for manual conversion.
With that being said, there are somethings you can do to make conversion considerably easy. First make sure your application is built in layers. This way you can convert one layer at a time, test and continue on. It also has the advantage of leaving you with usable software at every step. I recommend starting at the top (form) layer and working your way down.
Make sure anything that is VB6 centric and not Basic Centric is behind an interface. When .NET first came out several years ago I created a Canvas Interface and implemented that using the VB6 graphics command. I use the same Canvas interface in VB.NET except now it uses the Graphics Object. The same was done for printers.
Nearly all the code was moved out of our forms into classes that the forms called. The forms themselves implement an interface that the UI Classes used. When we switched to .NET we have a precise definition of how the form interacted with the rest of the system and form conversion was considerably easier.
All of these steps where done in VB6 and put through our normal release Q&A process. Then afterward we started the conversion.
我没有使用过上面提到的任何一个工具,但是只要稍加准备,Visual Studio 中的升级工具就足够了。
您需要做的第一件事是获取 Visual Basic 6 Code Advisor 来自微软。 这对于您的项目准备迁移有很大帮助。
I haven't used either of the tools mentioned, but with a little preparation, the upgrade tools in Visual Studio are more than adequate.
The first thing you need to do is get the Visual Basic 6 Code Advisor from Microsoft. It's a great help in getting your project ready for migration.
去年我的VB迁移合作伙伴专业版报价为2500美元。
我没买所以我可以评论
I was quoted $2500 for the professional edition of vb migration partner last year.
I didn't buy it so I can comment on it