views:

888

answers:

6

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

A: 

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.

rjrapson
Thanks, the vb6 code adviser requires excel and believe it or not my copy of excel was too old last time i looked, (should be ok now though :) )
kjack
The Microsoft tool is pathetic - according to the guy who wrote it (who also wants to sell you something better of course). http://www.devx.com/vb/Article/16822 And, Microsoft UK say the two tools you ask about are better than their wizard http://msdn.microsoft.com/en-gb/dd408373.
MarkJ
+3  A: 
Marc Gravell
really I just wnat the thing to work in .net. Re-writing would just take way too long.
kjack
How big were the projects you rewrote?
kjack
Well, the original codebase is hundreds of COM+ dlls in VB6, but with a reasonable degree of component isolation - we've only ported functionality as we need it: we still have a depressing number of VB6 dlls, but they work... for now...
Marc Gravell
If you have small isolated projects rewriting piecemeal may be manageable. But Microsoft do advise "Performing a complete rewrite to .NET is far more costly and difficult to do well [than converting] ... we would only recommend this approach for a small number of situations."
MarkJ
As with all scenarios, you must make your own determination based on the local specifics. I stand by my statement, just as much as I stand by the many COM+ dlls that I have left alone: they don't need work, and don't need migrating. But you should at least always ask the question properly.
Marc Gravell
Good comment. Other people on SO have managed Vb6->C# rewrites successfully, so it can be done. Bravax here for one. http://stackoverflow.com/questions/683918/best-strategy-for-moving-from-vb6-to-net/683946#683946
MarkJ
+1  A: 

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 :(

  • Artinsoft Upgrade Companion Developer Edition £199 for up to 50,000 lines of code. EDIT Now offering a free version that can do up to 10,000 lines of code.
  • Code Architects’ Visual Basic Migration Partner Professional Edition £399. They told me this was also for up to 50,000 lines of code.

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.

MarkJ
Those prices are way lower than I've heard previously. I've heard a quote of over $2,000 for vb migration partner professional and a lot higher for the enterprise edition
kjack
They seem to apply to the UK only though
kjack
Yes, "for the UK market" like I said. I've linked to the pages where they give the prices. I had a quote for the migration partner enterprise edition which was significantly more than the pro edition. I don't feel I ought to share the exact figure as it was a quote just to me.
MarkJ
I should say that when I contacted then, they replied to me very fast as well. However, all their replies kept going to the Junk folder. One of the few false positives, I've ever seen with Gmail.
AngryHacker
+2  A: 

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.

RS Conley
vbmigration partner is quite a recent product <= 1 yr old. Have you used that becauuse I think conversion tools have improved certainly way beyond the upgrade wizard.
kjack
ArtinSoft doesn't seem to have added anything that useful for our CAD/CAM application. However vbmigration seems to have taken the same approach I did (build support library that are compatible, etc) I will look at them closer. Thanks.
RS Conley
You mentioned the printer model - have you looked at the Printer Compatibility Library in the VB.NET power packs? Supposedly makes upgrading Printer object code easy. http://msdn.microsoft.com/en-us/vbasic/bb735936.aspx
MarkJ
Yes with that I was able to engineer a VB6 Graphics compatibility library.
RS Conley
A: 

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

+3  A: 

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!

Hi Eugenio What is the cost of the professional edition for people outside the UK?Thanks
kjack
Today the price of the Professional is $1,500, but it could change in the next months, when we will ship a new major release with new features.
Thanks for the information, Eugenio. The price is definitely not very expensive but unfortunately is expensive enough to make a lot of people like me struggle on with vb6 as long as MS will support our apps.
kjack