Moving to .NET doesn't mean throwing away your COM code. Integrating the 2 worlds (managed and unmanaged) is achieved via COM Interoperability and there are 2 main scenarios:
1. Writing .NET clients that use COM servers
2. Writing .NET servers to be used by COM clients
This 1500 pager is split into 9 parts containing 24 chapters and 6 appendices. In my opinion, the heart of this work lies in parts 2-5 (650 pages, 14 chapters) that thoroughly detail how to write perfect .NET components for COM clients, COM components for .NET clients, .NET clients for COM components and COM clients for .NET components. Trust me (and anyone that has read this book), there is absolutely nothing else left to be said about the topic.
The remaining 3 parts cover PInvoke (talking to Win32 dlls), advanced topics such as custom marshaling and two comprehensive examples. The quality throughout is of the highest level. It is a joy to read and full of technical information, a lot of it not found anywhere else. Own this book and forget the online help or any internet sites when it comes to interoperability.
The examples used throughout the book are not overly complex or academic or basic; they are just right. Such a balance is hard to strike. What is also hard to find is a book that treats both VB & C++ developers equally. Many authors will benefit by reading Nathan's writings to learn how to achieve that. Whether you plan to write C# or VB.NET code and whether your COM components were written in C++ or VB6 you will not feel left out or bored going through the chapters.
Although large, it can be read linearly and it will definitely serve as a reference text on your shelf. I particularly enjoyed the sidebars (categorised as FAQ, Digging Deeper, Tip, and Caution) which are full of golden information. I could go on praising it but suffice to say that it could easily be sold with money-back guarantee and not a single book would be returned.