15

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

Jon Seigel
  • 11,819
  • 8
  • 53
  • 90
kjack
  • 1,954
  • 1
  • 24
  • 39

6 Answers6

6

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 May 21 '09 at 09:33
  • 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. –  May 26 '09 at 10:32
  • 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 May 27 '09 at 12:23
5

"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.

Brownfield

Community
  • 1
  • 1
Marc Gravell
  • 927,783
  • 236
  • 2,422
  • 2,784
  • really I just wnat the thing to work in .net. Re-writing would just take way too long. – kjack Apr 05 '09 at 12:28
  • How big were the projects you rewrote? – kjack Apr 05 '09 at 12:30
  • 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 Apr 05 '09 at 14:51
  • 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 Apr 05 '09 at 17:58
  • 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 Apr 05 '09 at 20:20
  • 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 Apr 06 '09 at 08:55
5

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.

Community
  • 1
  • 1
MarkJ
  • 29,252
  • 4
  • 60
  • 104
  • 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 Apr 05 '09 at 22:15
  • They seem to apply to the UK only though – kjack Apr 05 '09 at 22:16
  • 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 Apr 06 '09 at 08:47
  • 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 Sep 12 '09 at 17:55
  • 2
    http://www.greatmigrations.com/ has a great tool that is 100% customizable. Your code gets to 100% based on rules and nothing has to be hand coded like artinsoft or vb migration partners. Try it out. I highly recommend it. – Jimmie Clark Apr 01 '13 at 15:38
4

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
  • 7,106
  • 1
  • 17
  • 36
  • 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 Apr 06 '09 at 20:55
  • 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 Apr 07 '09 at 12:06
  • 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 Apr 07 '09 at 15:56
  • Yes with that I was able to engineer a VB6 Graphics compatibility library. – RS Conley Apr 08 '09 at 05:28
2

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
  • 1,937
  • 1
  • 21
  • 26
  • 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 Apr 05 '09 at 12:23
  • 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 Apr 05 '09 at 18:00
1

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