COM Interop - Releasing unused COM libraries

Following up with my last post on releasing PInvoked libraries....this time with COM libraries.  There's a more robust way to do this for COM libraries.  After you're done with your COM libraries and you've released all associated resources (Marshal.ReleaseCOMObject()) you can free all COM libraries that are in your process space by PInvoking CoFreeUnusedLibrariessEx

This call will release any dll's whose DllCanUnloadNow() returns true  You can use process explorer from SysInternals to see this in action.