See the question and my original answer on StackOverflow

When declaring inherited COM interfaces in .NET you must declare all inherited interfaces members, recursively. So for example, if you have this as the base interface:

[Guid("2cd90691-12e2-11dc-9fed-001143a055f9"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IBase
{
    int Blabla();
}

Then an IDerived definition would be something like this:

[Guid("65019f75-8da2-497c-b32c-dfa34e48ede6"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IDerived
{
    // IBase methods
    int Blabla();

    // IDerived methods
    ...
}

Or better, like this, if you want to keep inheritance hierarchy in .NET:

[Guid("65019f75-8da2-497c-b32c-dfa34e48ede6"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IDerived : IBase
{
    // IBase methods
    new int Blabla();

    // IDerived methods
    ...
}