Are there any ‘good’ resources for porting a VB.NET winforms application to C#? I’m sure there are is software that just translates the code, but I’m looking to refactor the code at the same time. Keeping it in its current form is problematic, since it uses some of the ‘bad design’ practices that VB.NET allows, and would further complicate future maintanence. Has anyone here gone through that process, and how did you go about doing it? Did you use a translate/refactor approach? Did you just use the end product to recreate functionality without looking at the current codebase for most of it? What would you (collectively) recommend?
Update:
As I was telling Grauenwolf, keeping it in its current language presents the following issues:
- Not being able to readily add features. VB.NET isn’t a language I’m rock solid in. I do appreciate the irony of learning the language to port it over — but future maintenance will need to account for someone who doesn’t know VB.NET.
- The rest of the application has been ported to C# (a long time ago, in fact); all features that we’d like to add depend on de-coupling the app (right now it’s very tightly coupled). My choices are to either refactor it in a language I’m not too familiar with, or to refactor it in a language I understand.
To anyone who voted the question down, I’m not really sure why you did; the concern isn’t whether I should leave it in VB.NET; the concern is what is the future cost of not porting it over now. If I’m going to spare great expense in fixing it, why not go the extra step and make it maintainable for a future programmer?
Author’s Note: I hadn’t looked at this question in ages, there was a recent response, so I moved my ‘answer’ into the question and deleted the ‘answer’ (since it wasn’t really an answer).
Based on my experience working with some large applications that mix VB and C# projects, I would recommend leaving it in VB.NET. If there are problems with the design, then fix them, but converting the whole thing to C# sounds like a messy, unnecessary distraction to me.
The non-stylistic differences between the two languages are very minimal, so it is hard to see a functional need that would force a conversion. (There was an old bug in Visual Studio 2003 that ruled out certain chains of project references that mixed C# and VB projects in specific ways, but that is the only one I have ever run into as a practical obstacle.)
Individual developers certainly tend to have a stylistic preference favoring one or the other, but a full conversion is a lot of work to do for something that amounts to a taste for a different flavor of syntactic sugar.