My current projects involve a lot of old projects, that is, bringing old code up to new standards, bringing them in-line with the new build process and making sure we actually have the code for all the old programs. It's not as easy as it sounds, but it is pretty valuable to the organization, though it's a hard sell to the business customers and to management.
Most of the old code I work on is in C++, though some is a simple upgrade from C# in .NET Framework 1.1 to C# in .NET Framework 2.0. In some places, we have converted code from C++ to C# with the C++ doing a COM Callable Wrapper call to the C#. This has proven to not be the most easy way to do things, nor the most reliable, and we spend a lot of time trying to debug the interface. In my view, the shorter the amount of time you can can spend supporting that dual code environments, the better.