I'm currently in the initial stages of starting to migrate a large application (600 modules, about 50 Active X DLLs) over to DotNet. I agree with the comment above about the Upgrade Wizard being a dead loss - one of our former coders was inordinately fond of the GoSub construct in VB6 - which isn't in VB2005... How does the upgrade wizard handle the problem? That's right - it replaces each call to the subroutine with the body of the sub-routine! Nice! Don't implement a private sub and pass arguments in by reference - nah - that'd be too obvious, wouldn't it?
My advice, by a decent book, and read it. I bought one on VB2005 by Tim Patrick, and I *REALLY* liked his style - the book was a pleasure to read, and the guy knows what he's talking about...
Also, play around with things, and use Google lots!
Personally, the issues we're finding to be a pain (though a good idea in terms of project design) are:
* No Gosubs
* VB6 passed arguments ByRef by default - where as VB2005 uses ByVal
* Strings - there is a VB Compatibility library to give you the functions you know and love (like left(), right() etc), but that's cheating... Using strings properly (via their methods / static methods) needs a bit of acclimatisation, but it's worth it.
* ADO.NET - Totally different - but not too bad once you work through an example.
Things I love about VB2005.
* Inheritance - Finally, proper OOP comes to the VB World (though previous versions of DotNet also had it)
* Generic functions / classes - we're you can pass the type of an argument into a function together with it's value, and it will be treated as that type inside the function.
* Regular Expressions - A pain in the behind to begin with, but *well* worth the effort.
* Ability to easily use libraries written in any other DotNet Language.
My advice - get stuck in...