In order to update Internet Hearts with WinFX features, I'm going to leverage C++ Interop and recompile at least some of the source code with /clr so I can start using managed APIs. Therefore, my first step was to get the source code (which hadn't been touched in about 6 years) building with Visual C++ 2005 (aka "VC8"). Yes, I could have kept pieces compiling with VC6. Or I could have changed my approach to keep using VC6 everywhere and leverage PInvoke or COM Interop instead of C++ Interop. But C++ Interop is the most natural choice for this project... plus I want my unmanaged code to get the benefits of the latest & greatest VC compiler. Don't be fooled into thinking that Visual C++ 2005 is only interesting for managed code!
Of course, the jump from VC6 to VC8 is pretty large. A lot has happened in those 7 (or is it 8?) years! Actually, the biggest adjustment is going from VC6 to VC7.1, due to significantly increased compliance with ANSI/ISO standards, resulting in breaking changes. But if you've already made the jump to VC7.1, moving to VC8 should be much easier. The biggest change you'll notice when moving to VC8 is probably the CRT Security Enhancements, which will likely give you lots of deprecation warnings.
Next time I'll discuss what challenges I ran into upgrading the Internet Hearts codebase, but in the meantime I've done some navigating of the maze known as MSDN, and came up with the following list of migration resources. I just hope that these funky URLs will be a little more permanent than most permalinks I've tried to rely on!
Moving from 6.0 to 7.1:
- ATL/MFC Breaking changes (6.0 to 7.0) (also seen here but the list isn't as long)
- ATL/MFC Breaking changes (7.0 to 7.1)
- Standard C++ Library changes and issues specific to upgrading
- Compiler breaking changes
- In-depth info on increased standards compliance
- Project upgrading
Moving from 7.1 to 8.0: