The main disadvantage is that the COM components must be registered on the client system, it's impossible to run more than one version on the same system, and there is a performance hit in the COM Interop layer. This also leads to the notorious "DLL Hell" concept which Microsoft has eliminted in .NET. X-Copy deployment is not possible.